首先要理解幾個(gè)概念(這里不詳細(xì)解釋?zhuān)?br>
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
這個(gè)時(shí)候,單擊屏幕历造,i的值是10直秆;index的值是9预鬓。
那么如果我想在某個(gè)特定條件下取出i的值應(yīng)該怎么辦呢巧骚?
例如 我就想取出i=5;
var index=-1;
for(var i=0;i<10;i++){
var a=function(k){
if(k==5){ // 當(dāng)i的實(shí)時(shí)值為5時(shí)格二,執(zhí)行
document.onclick = function(){
alert("i:"+k); //i:5
}
}
}; //創(chuàng)建函數(shù)劈彪,賦值給a
a(i); //通過(guò)a調(diào)用函數(shù),將i的實(shí)時(shí)值賦值給k傳入函數(shù)
index = i;
}
alert("index:"+index); //index:9
先定義一個(gè)函數(shù)顶猜,將 i 作為參數(shù)值傳給 k 粉臊,然后彈出 符合條件下的 k 值,也就是實(shí)時(shí)的 i 值了驶兜。
如果我想用index 來(lái)保存實(shí)時(shí)的 i 值,只需要把 index 放到特定條件內(nèi)部就可以了远寸。
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是在判斷條件外面的函數(shù)抄淑,則 for循環(huán)還是會(huì)使 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