let
let 声明的变量会被提前,但是不被初始化赋值,所以赋值前不会打印
alert (a);
var a = 9;
alert的值是undefined.
alert(b);
let b = 9;
会报错.
输出10个从0-9的数字
var funcs = [];
for (var i = 0;i < 10;i++) {
funcs.push( function () {
console.log(i);
})
}
遍历执行funcs,打印10个10;这是因为i是个全局变量,每次在大括号中执行往数组中添加元素的时候,其实i都递增了
for (let i = 0;i < 10;i++){
func.push(() = > {
console.log(i);
})
}
遍历执行依次0-9;这是因为每个i都会进入循环体代码块,然后就是一个独立的个体,不在与其他的i产生联系.这里我最开始疑惑的是,i应该被提升到了全局,还是一个全局的变量,只能猜测也许是和函数作用域执行环境那样,i进去就被复制并在代码块内部重新声明了一个i,且值是上一个++.
const
const用来声明静态变量,其值是不能变化的.
网友评论