ES6 變數宣告
阿新 • • 發佈:2019-01-07
let && const
- let 和 const 都是 ES6 加入的變數宣告命令.
- 與 var 不同點在於它們都是塊級作用域.
- const 是一個只讀常量,一旦宣告就無法修改.事實上, const 保證的並不是所宣告的值不改變,而是所宣告值得地址不發生改變.
- let 和 const 不會出現變數提升. 因此 let 宣告的變數不能夠在沒有宣告的情況下就直接使用.ES5 只有全域性作用域和函式作用域,沒有塊級作用域
if(true){
var a = 10
let b = 1
console.log(a, b)
// 10, 1
}
console.log(a, b)
// b is undefined
for 迴圈有一個特別之處,就是設定迴圈變數的那部分是一個父作用域,而迴圈體內部是一個單獨的子作用域。
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
var tmp = new Date()
function f(){
console.log(tmp)
// undefined
var tmp = 10
}
f()
在 ES5 中, window物件與全域變數是等價的. 在 ES6 進行了改進,var 宣告的物件與全域變數等價,而 let 宣告的則不同.
var a = 12
window.a
//12
let b = 12
window.b
//undefined