放在外面我測(cè)試了一下是可以的,邏輯上來(lái)說(shuō),變成了false之后就變不回true了,然后得等mouseout來(lái)清楚,但是如果放在for in 上面的話,只要其中一個(gè)參數(shù)到達(dá)了目標(biāo)值,flag就是false然后就clear定時(shí)器了,不是就無(wú)效了么
放在外面我測(cè)試了一下是可以的,邏輯上來(lái)說(shuō),變成了false之后就變不回true了,然后得等mouseout來(lái)清楚,但是如果放在for in 上面的話,只要其中一個(gè)參數(shù)到達(dá)了目標(biāo)值,flag就是false然后就clear定時(shí)器了,不是就無(wú)效了么
2016-05-17
?flag放在函數(shù)外面也行,但是每次執(zhí)行都必須初始化 flag 為 true,其次,flag 的 初始化 必須放在 for in 循環(huán)上面
(不管你在哪定義flag)。 因?yàn)槭莊or in 循環(huán),參數(shù)達(dá)到目標(biāo)之后,確實(shí)不執(zhí)行你說(shuō)的?icur != json[changeType] ;?
但是,其余的for 循環(huán)時(shí),會(huì)對(duì)其他的元素進(jìn)行這個(gè)判斷?if (attr !== json[attr] ) ;如果不等,flag 就變成了false;
你可能看錯(cuò)了一個(gè)地方,if(flag === true){.....} 是放在整個(gè)for 循環(huán)外面的,并沒(méi)有在for 循環(huán)里面。所以在循環(huán)
的 n 次過(guò)程中,只要有一次 不等于目標(biāo)值,flag 就成了false, 循環(huán)結(jié)束之后,才判斷?if(flag === true){.....},如果都到了目標(biāo),就是沒(méi)有執(zhí)行 flag = false 的if語(yǔ)句 ,flag = true ,才會(huì)終止計(jì)數(shù)器
2016-07-21
我也覺(jué)得很迷。。。
2016-05-17
老師寫(xiě)的是if (attr !== json[attr] ) { flag = false; } 然后清除定時(shí)器時(shí)的語(yǔ)句是 if( falg === true){..........}
如果有一個(gè)沒(méi)有達(dá)到目標(biāo)值,(外面有一個(gè)for循環(huán))flag 就會(huì)變成false,就不會(huì)執(zhí)行for循環(huán)之后的 if(flag) 語(yǔ)句,
定時(shí)器的function結(jié)束之后,flag被撤銷(xiāo),在次執(zhí)行的時(shí)候,重新生成了新的flag(true),然后再次進(jìn)行判斷。
不存在你說(shuō)的一個(gè)到達(dá)了目標(biāo)flag就變成了true的情況