var 和let
在es5中只有只有全局作用域和函数作用域
在全局作用域中定义的变量,每个函数和每个变量中都可以使用,但也有可能会被改变
var name = 'zach';
while(true){
var name = 'obama'
console.log(name)
break
}
console.log(name);
在es6中重新定义了一个块级作用域,使用let定义的变量只在该代码块中可用
let name = 'zach'
while (true){
let name = 'obama'
console.log(name)
break
}
console.log(name);
用闭包解决
function iteratorFactory(i){
var onclick = function (e) {
console.log(i);
}
return onclick;
}
var clickBoxs = document.querySelectorAll('.clickBox');
for(var i=0;i<clickBoxs.length;i++){
clickBoxs[i].onclick = iteratorFactory(i);
}