1.个人理解:
- 作用域
-
var
编译阶段变量提升 提升到外层作用域 -
javascript
中{}
限制作用域 而()
并不限制作用域 - 所以在
for(var i = 0)
运行得前(编译阶段) 外层就存在一个var i = undefined
- 但我们使用
for(let i = 0)
时 一切安好,正时因为let
是块级作用域 而var
则是全局作用域
-
for (var key in {
name: 'lisi',
age: '20'
}) {}
console.log(key) // 打印出 age 同理
for (let key in {
name: 'lisi',
age: '20'
}) {}
console.log(key) // 打印出
// Uncaught ReferenceError: key is not defined
// let 声明得变量被限制在了块级作用域内
网友评论