(1) 變數提公升機制:無論在哪宣告,都會被當成在當前作用域頂部宣告的變數,這種機制在很多時候會產生問題。
(2) 如果是在全域性作用域中宣告,會被繫結到window屬性中,示例如下:
var a = 1;
console.log(a, window.a) //輸出1 1
(3) 同一變數可重複宣告。
(1) let和const的區別在於:let宣告的變數其值可更改,const宣告的變數不可更改。
(2) const可宣告物件,允許修改物件內的屬性,但不可修改繫結。
(3) 塊級作用域,存在於函式內部、塊中,在塊外不可使用。
(4) 出了**塊,會立即銷毀。
(5) 與var的不同:禁止重複宣告,不會繫結到window中,無變數提公升機制。
(6) 可用於for-in、for-of迴圈中,因為每次迴圈會重新宣告賦值let或const變數,所以不影響使用。
(7) 使用塊級作用域時的最佳實踐:在宣告變數時預設使用const,除非變數需要重新賦值才用let,盡量不使用var,這樣可防止某些錯誤的產生。
塊級作用域繫結
1 無論在哪宣告,都會被當成在當前作用域頂部宣告的變數 hosting機制 2 var會覆蓋全域性屬性 1 塊級識別符號,不會被提公升,用臨時死區 tdz 表示 2 let不能覆蓋全域性屬性,只能遮蔽 3 let不能重複定義,即定義乙個已被定義過了的乙個變數 4 for in迴圈和for of迴圈 ...
塊級作用域
跨級作用域本身沒有宣告可以說的,就需要注意兩點 1.跨級作用域內宣告的var變數並不會存在這個塊級作用域內,而是會提公升到非塊級作用域內 2.在塊級作用域內宣告function,在不同瀏覽器會有不同結果,如果是根據條件宣告function的話,請用var func function的形象 但是為什麼...
全域性作用域 塊級作用域
瀏覽器環境有一頂層物件window,window的屬性和var的全域性變數等價。如果用var設定了window物件的內建屬性作為變數,內建屬性值將會被覆蓋。如果是window物件的內建屬性,輸出預設值 非內建則輸出underfined。console.log window.name window.n...