作用域
全局作用域,作用域链,在自身找不到向上级找,再到全局找,都找不到,报错
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
var btn = document.querySelectorAll('button');
for (var i = 0; i < btn.length; i++) {
btn[i].onclick = function () {
alert(i);
}
}
var i = 6;
// 点击 button后,输出的都是 6 ,因为 里面 alert 的 i ,是一个全局变量,
// 等到点击的时候,已经for循环完毕,赋值为6了
-------------------------------------
var btn = document.querySelectorAll('button');
var i = 6;
for(var i = 0 ; i<btn.length; i++){
(function(index){
btn[index].onclick = function(){
alert(index)
}
})(i)
}
var i = 6;变量
// 点击 button ,输出 0 1 2 3
因为闭包,i是一个局部变量,循环出了 几个不同的闭包函数,
这个i的值,保存在函数作用域内,取值的时候,函数内有,就用函数的
---------------------------------------
var btn = document.querySelectorAll('button');
var i = 6;
for(var i = 0 ; i<btn.length; i++){
fn(i);
}
var i = 6;
function fn(index){
btn[index].onclick = function(){
alert(index)
}
}
// 这样,也是在函数内,0 1 2 3