for循環中++i和i++的區別

語法

for (語句1; 語句2; 語句3) { 被執行的代碼塊 } for (語句1; 語句2; 語句3) { 被執行的代碼塊 }

語句 1 在循環(代碼塊)開始前執行瀏覽器

語句 2 定義運行循環(代碼塊)的條件性能

語句 3 在循環(代碼塊)已被執行以後執行(這就是循環中的++i和i++結果同樣的緣由,可是性能不同,稍後解釋)code

語句1 (同上面語法中的 語句1)

語句1 是可選的,也就是說不使用語句1 也能夠。內存

var i=2,len=5; for (; i<len; i++){ document.write(cars[i] + "<br>"); } var i=2,len=5; for (; i<len; i++){ document.write(cars[i] + "<br>"); }

也能夠在語句1 中初始化任意(或者多個)值:it

var arr = [1,2,3] for (var i=0,len=arr.length; i<len; i++){ document.write(cars[i] + "<br>"); } var arr = [1,2,3] for (var i=0,len=arr.length; i<len; i++){ document.write(cars[i] + "<br>"); }

語句2 (同上)

一般語句 2 用於評估初始變量的條件。console

語句 2 一樣是可選的。for循環

若是語句 2 返回 true,則循環再次開始,若是返回 false,則循環將結束。class

若是您省略了語句 2,那麼必須在循環內提供 break。不然循環就沒法停下來。這樣有可能令瀏覽器崩潰變量

語句3 (同上)

一般語句 3 會增長初始變量的值。循環

語句 3 也是可選的。

語句 3 有多種用法。增量能夠是負數 (i--),或者更大 (i=i+15)。

語句 3 也能夠省略(好比當循環內部有相應的代碼時):

var i=0,len=arr.length; for (; i<len; ){ document.write(cars[i] + "<br>"); i++; } var i=0,len=arr.length; for (; i<len; ){ document.write(cars[i] + "<br>"); i++; }

++i 和 i++ 的區別

 var i = 10; console.log(i++); //10 ,先引用原值,而後加1 等價於: var i= 10; console.log(i); //先輸出i i++; //而後加1 var i = 10; console.log(++i); //11 , 此次是先加1,而後輸出 var i = 10; console.log(i++); //10 ,先引用原值,而後加1 等價於: var i= 10; console.log(i); //先輸出i i++; //而後加1 var i = 10; console.log(++i); //11 , 此次是先加1,而後輸出

總結下:++在前下自加後運算;++在後先運算後自加

for循環中++i 和 i++ 的區別

根據上面的for循環的語法定義 ++i 和 i++的結果是同樣的,都要等代碼塊執行完畢才能執行語句3,可是性能是不一樣的。在大量數據的時候++i的性能要比i++的性能好緣由:

i++因爲是在使用當前值以後再+1,因此須要一個臨時的變量來轉存。

而++i則是在直接+1,省去了對內存的操做的環節,相對而言可以提升性能

相關文章
相關標籤/搜索