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