ecma script2015以後的
沒有塊級作用域,導致var在for/if內宣告的變數可以被全域性訪問;(es6之前的解決辦法使用iife-立即執行函式)
變數提公升,使**不好理解。舉例:
var a = 1;
function
show
()show(); //結果是a undefined
複製**
let宣告的變數有塊級作用域,只在作用域內有效;
注意:let const 在全域性宣告的變數並不指向windowlet宣告的變數沒有變數提公升;在**塊內,let宣告變數之前的區域(tdz 暫時性死區)使用變數都會報錯, 必須先宣告在使用;
let在同乙個作用域內,不能重複定義變數,可以賦值;
對於for(){} 類似的結構來講,()內的**塊可以看作{}**塊的父級;
const塊級作用域和變數提公升等方面與let一樣;
const定義變數時,必須初始化賦值,不可以先宣告後賦值;
const宣告的常量,不能重複賦值修改;
對於物件來說,由於賦值給const常量的是引用,所以可以直接對屬性進行修改,或者通過push的操作修改陣列;
如果想建立不能修改的物件可以使用object.freeze;const obj1 = object.freeze(obj);
ES6 let與const以及變數的解構賦值
7.用途 1 不存在變數提公升 宣告前使用報錯 2 暫時性死區 先宣告,後使用 3 不允許在相同作用域內重複宣告 4 塊級作用域 es6 塊級作用域內宣告函式相當於var es5 塊級作用域內宣告的函式類似於let 塊級作用域內宣告let變數或函式必須有 1 變數值不可變 2 不存在變數提公升 3 ...
學習筆記 Es6 let和const
console.log insane 報錯 上面 使用了乙個五層的塊級作用域,每一層都是乙個單獨的作用域。第四層作用域無法讀取第五層作用域的內部變數。但內層作用域可以定義外層作用域的同名變數。如下 2 塊級作用域的出現,實際上使得獲得廣泛應用的匿名立即執行函式表示式 匿名 iife 不再必要了。ii...
ES6 let 和 const命令(學習筆記)
1.暫時性死區 只要塊級作用域內有 let 命令,它所宣告的變數就繫結 bounding 這個區域,不再受外部的影響。也就是說在 塊內使用 let 命令宣告變數之前,該變數都是不可用的,在語法上,這被稱為 暫時性死區 var tmp 123 if true es6明確規定,如果區塊中存在 let 和...