国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

徹底理解 i++ 與 ++i 的區別

edgardeng / 944人閱讀

摘要:以上的輸出的結果是先看來看看他們的語法定義前置遞增遞減執行前置遞增和遞減操作時,變量的值都是在語句被求值以前遞減遞增的。在計算機科學領域,這種情況通常被稱作副效應。

var j=0;
for (i=0;i<100;i++){
    j=j++;
}
console.log(j);

以上的輸出的結果是 0;先看來看看他們的語法定義:

前置遞增遞減 ++i / --i

執行前置遞增和遞減操作時,變量的值都是在語句被求值以前遞減遞增的。(在計算機科學領域,這種情況通常被稱作副效應。)請看下面這個例子。

let age=29;
let newAge= --age + 2
console.log(age);
console.log(newAge);

前置遞增遞減遇到有賦值操作時: 先遞減(29-1),再計算表達式的值(28加上2)

后置遞增遞減 i++ / i--

后置遞增和遞減與前置遞增和遞減有一個非常重要的區別,即遞增和遞減操作是在包含它們的語句被求值之后才執行的

let age=29;
let newAge= age-- + 2
console.log(age);
console.log(newAge);

后置遞增遞減遇到有賦值操作時: 先計算表達式的值(29+2=31),再遞減(29-1)

他們有什么區別

先看下面的例子:

var j=0;
for (i=0;i<100;i++){
    j++;
}
console.log(j);

var j=0;
for (i=0;i<100;i++){
    ++j;
}
console.log(j);

可以看出 沒有賦值等其他操作時, 其實++i與i++是沒有區別的
但是,當遞增遞減語句中包含其他操作時:
前置遞增遞減:

let num1=1;
let num2=2;
let num3=++num1+num2;
let num4=num1+num2;
console.log(num3);
console.log(num4);


后置遞增遞減:

let num1=1;
let num2=2;
let num3=num1++ + num2;
let num4=num1+num2;
console.log(num3);
console.log(num4);


包括上方的age例子 我們看出同樣的求值,出現了不同的結果;
我們可以看出 前置遞增使用了遞增后的值(num1 遞增后為2)同num2相加得到4;后置遞增使用了遞增前的值(num1為1)同num2 相加得到3
至此,我們就可以可以明白文章開始例子中j=j++; 之后循環的值為什么一直是0

j=j++;可以理解為 j = j 遞增前的值; 而遞增前的值為0;因此j 每次循環都恒等于0;改為前置遞增則可以解決這個問題:

var j=0;
for (i=0;i<100;i++){
    j=++j;
}
console.log(j);


墻裂推薦,為了方便理解在非在必要條件下建議避免書寫i=i++;這樣的賦值語句

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/104033.html

相關文章

  • 低門檻徹底理解JavaScript中深拷貝和淺拷貝

    摘要:案例中的賦值就是典型的淺拷貝,并且深拷貝與淺拷貝的概念只存在于引用類型。修改修改經測試,也只能實現一維對象的深拷貝。經過驗證,我們發現提供的自有方法并不能徹底解決的深拷貝問題。 在說深拷貝與淺拷貝前,我們先看兩個簡單的案例: //案例1 var num1 = 1, num2 = num1; console.log(num1) //1 console.log(num2) //1 num...

    wind3110991 評論0 收藏0
  • 一文讓你徹底理解 Java NIO 核心組件

    摘要:的出現解決了這尷尬的問題,非阻塞模式下,通過,我們的線程只為已就緒的通道工作,不用盲目的重試了。注意要將注冊到,首先需要將設置為非阻塞模式,否則會拋異常。 同步、異步、阻塞、非阻塞首先,這幾個概念非常容易搞混淆,但NIO中又有涉及,所以總結一下[1]。 同步:API調用返回時調用者就知道操作的結果如何了(實際讀取/寫入了多少字節)。 異步:相對于同步,API調用返回時調用者不知道操作...

    guyan0319 評論0 收藏0
  • 深入前端-徹底搞懂瀏覽器運行機制

    摘要:當這些異步任務發生的時候,它們將會被放入瀏覽器的事件任務隊列中去,等到運行時執行線程空閑時候才會按照隊列先進先出的原則被一一執行,但終究還是單線程。 瀏覽器是多進程的 showImg(https://segmentfault.com/img/remote/1460000019706956?w=815&h=517); Browser進程: 瀏覽器的主進程(負責協調、主控),只有一個。 負...

    YPHP 評論0 收藏0
  • 深入前端-徹底搞懂瀏覽器運行機制

    摘要:當這些異步任務發生的時候,它們將會被放入瀏覽器的事件任務隊列中去,等到運行時執行線程空閑時候才會按照隊列先進先出的原則被一一執行,但終究還是單線程。 瀏覽器是多進程的 showImg(https://segmentfault.com/img/remote/1460000019706956?w=815&h=517); Browser進程: 瀏覽器的主進程(負責協調、主控),只有一個。 負...

    Youngs 評論0 收藏0

發表評論

0條評論

edgardeng

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<