letとvarの違い
10233 ワード
ES 6追加のlet:は最上階の対象window に属さない.重複した声明は許されない. 変数アップ が存在しません.一時性死区:先に定義して、後で を使います.ブロック級作用領域 ES 5のvar:は最上階の対象window に属します.は、ステートメントの繰り返しを可能にし、後のステートメントは、前のステートメントの値 を置き換える.存在変数アップ 一時性死区がありません. 関数領域
for (var i = 0; i < 3; i++) {
console.log(i); // 0 1 2
console.log(this.i) // 0 1 2
}
console.log(i) // 3 var window, for i=3 for
for (let i = 0; i < 3; i++) {
console.log(i); // 0 1 2
console.log(this.i) // undefined let window
}
console.log(i) // error
for (var i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i) // 3 3 3
console.log(this.i) // 3 3 3
})
}
console.log(i) // 3
for (let i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i) // 0 1 2
console.log(this.i) // undefined
})
}
console.log(i) // error i not undefined
for (let i = 0; i < 3; i++) {
(function () {
setTimeout(() => {
console.log(i) // 0 1 2
console.log(this.i) // undefined
}, 1000)
})()
}
for (var i = 0; i < 3; i++) {
(function () {
setTimeout(() => {
console.log(i) // 3 3 3
console.log(this.i) // 3 3 3
}, 1000)
})()
}
ノックして理解します.