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