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