老師,我 想分清這三個定義變量的方法為什么結果不一樣呢?
老師,您好。 我想問的問題是在while循環下,i++, i=i++, i=i+1 , 這三個變量,我前提的判斷條件已經是i<=100了,i++和i=i+1的輸出結果一樣。為什么i=i++的輸出結果無線循環呢?謝謝老師
老師,您好。 我想問的問題是在while循環下,i++, i=i++, i=i+1 , 這三個變量,我前提的判斷條件已經是i<=100了,i++和i=i+1的輸出結果一樣。為什么i=i++的輸出結果無線循環呢?謝謝老師
2017-06-22
舉報
2017-06-22
i=i++; 在循環中正常人都不會這么寫,要么直接i++,要么i = i+1,要么i = ++i。你這樣寫i=i++和i=i沒什么區別。
沒必要糾結這些無意義的東西,有這個時間還不如去點實際的東西。
2017-06-22
因為 i=i++;是先賦值參加運算,后自增,也就是說在運算結束之前都不會自增,在for循環這個閉包中,運算不會停止,i就一直是初始值,只有當跳出這個閉包運算之后i才會自增,但你的i一直是初始值,所以一直是<=100的,就進入了無限循環?
for(var i=0;i<3;){
i=++i;
console.log(i);
}
如此問題解決,原因是i先賦值了,并且直接參與到閉包中
2017-06-22
因為i=i++是先將“=”右邊的i賦值給左邊的i,然后i再自增,所以無論i自增到什么值,都和循環后的i沒有關系,循環后的i永遠都是100,滿足你的條件i<=100,所以就一直不斷進入無限循環了。