首先要理解几个概念(这里不详细解释)
1.作用域和作用域链
2.闭包
var index=-1;
for(var i=0;i<10;i++){
document.onclick = function(){
alert("i:"+k); //i:10
}
index = i;
}
alert("index:"+index); //index:9
这个时候,单击屏幕,i的值是10;index的值是9。
那么如果我想在某个特定条件下取出i的值应该怎么办呢?
例如 我就想取出i=5;
var index=-1;
for(var i=0;i<10;i++){
var a=function(k){
if(k==5){ // 当i的实时值为5时,执行
document.onclick = function(){
alert("i:"+k); //i:5
}
}
}; //创建函数,赋值给a
a(i); //通过a调用函数,将i的实时值赋值给k传入函数
index = i;
}
alert("index:"+index); //index:9
先定义一个函数,将 i 作为参数值传给 k ,然后弹出 符合条件下的 k 值,也就是实时的 i 值了。
如果我想用index 来保存实时的 i 值,只需要把 index 放到特定条件内部就可以了。
var index=-1;
for(var i=0;i<10;i++){
var a=function(k){
if(k==5){
document.onclick = function(){
alert("i:"+k); // i:5
}
index = k;
}
};
a(i);
}
alert("index:"+index); //index:5
注意如果 index是在判断条件外面的函数,则 for循环还是会使 index值变成9
var index=-1;
for(var i=0;i<10;i++){
var a=function(k){
if(k==5){
document.onclick = function(){
alert("i:"+k); // i:5
}
}
index = k;
};
a(i);
}
alert("index:"+index); //index:9
网友评论