let 關鍵字特點
塊級作用域:if語句和for語句之類的大括號會隔離作用域
if
(true
)console.
log(a)
;// 10
console.
log(b)
;// 報錯 referenceerror: b is not defined
console.
log(a)
;// 因為有變數宣告的提公升所以會輸出 undefined
console.
log(b)
;// 報錯 referenceerror: cannot access 'b' before initialization
var a =10;
let b =
10;
var a =10;
var a =11;
console.
log(a)
;let a =12;
// 報錯 syntaxerror: identifier 'a' has already been declared
var a =11;
console.
log(a)
;// 11
console.
log(window.a)
;// 11 var定義的全域性變數會被註冊到window身上
let a =10;
console.
log(a)
;// 10
console.
log(window.a)
;// undefined
額外說明: 有一些變數不要定義在全域性中 window含有的屬性
// 比如 top status name
var top =10;
console.
log(top)
// 輸出的是window物件
1<
/li>
2<
/li>
3<
/li>
4<
/li>
5<
/li>
<
/ul>
for(
let i =
0; i < lis.length; i++)}
<
/script>
const關鍵字const關鍵字用於定義常量 與let的區別就在於儲存的內容不能變 其餘的特點與let一模一樣
// const a; // 報錯 syntaxerror: missing initializer in const declaration
// a = 11; // 報錯 typeerror: assignment to constant variable.
// const只管變數是否被賦予新的值 不會在意值的內容的變化
const obj =
// const定義的常量通常是值型別
// 如果是引用型別 只要變數所儲存的位址不發生變化 const並不關心位址所儲存的內容是否變化
console.
log(obj)
;// 輸出 沒有任何內容
settimeout
(function()
,1000
);
ES6 新增關鍵字let const
1 es6中新增的let關鍵字 之前我們宣告乙個變數時,都是使用關鍵字var,那新增加的let和var有什麼不同呢?var的不足之處一 var arr for vari 0 i 10 i arr 8 console.log i 的結果為 10 同樣的換成 let之後就沒問題 var arr for ...
es6之let,const關鍵字
在es5中沒有塊級作用域,只有函式作用域和全域性作用域,例如不能成為乙個作用域,但在es6中可以 for var i 0 i 4 i console.log i i 4這是因為i是在全域性的,最後列印的是for迴圈裡面最後的結果。用let替換var則結果為not defined。for let i ...
ES6 之關鍵字 let
正如大家都熟悉的,我們平時在寫 的時候,用var 宣告乙個變數,除此之外,也再沒有接觸到其它的關鍵字了,不管我們宣告什麼樣型別得變數,都用var 搞定了,很方便,但是es6 告訴你,除了var,還可以試試 let 來宣告變數。那麼,既然var 方便,為什麼還要let 來宣告,這麼說 var 宣告 一...