使用var 实现let的for循环
Let 与var的区别是:let为局部变量,存在暂时性死区而var为全局变量
暂时性死区:es6规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。在代码块内,使用let命令声明变量之前,该变量都是不可用的,这在语法上,称之为’暂时性死区’
var实现let 利用闭包的的性质解决方法:
var a = []
for (var i = 0; i < 3; i ++) {
(function () {
var b = i
a[i] = function() {
// 注意不能直接输出i,不然依旧一样
console.log('i为:' + i)
console.log('b为:' + b)
}
}) (i)
}
a[0]() // i为3,b为0
I的值与b的值不同的原因是因为一个以实参一个以行参传的,实参传递了,但是行参没有被接受