初識JavaScript最容易模糊的三大問題

第一:y++與 ++y的問題

  • y++:這是一個表達式,等於y之前的值
  • ++y:值先自加

     var y=4,z=0;
     z=y++;
    console.log(“z=”+z);
    console.log("y="+y);
    

    結果是:z=4 y=5;
    結果分析:對於z=y++來說,它是表示將y賦值給z,y再自加1,,所以z的值是y自加之前的;而y的值是y=y+1之後的值

實戰練習:

var a= 2,z=0;
z=(a++)+(++a)+(a++)+(++a);
alert(z);

計算結果是:16.
分析見圖:





第二:邏輯與&和邏輯非|的短路現象

 var result, x=3;
 var y=4;
 result= x < 20 && y++ >10;
 console.log(result);
 console.log(y);

輸出結果:flase y==5

 var result, x=3;
 var y=4;
 result= x > 20 && y++ >10;
 console.log(result);
 console.log(y);

輸出結果:flase y=4

這是怎麼造成的呢?
在這裏我們注意到,只改變了 result= x < 20 && y++ >10;這條語句,在執行&&運算時,只有兩個條件都爲false時,輸出結果才能是false,當第一個條件執行結果就爲false時,後面的那個條件就不會再執行了。這樣便出現了短路的現象,導致y的自加不會計算

邏輯||運算和邏輯&&同理,邏輯||在滿足一個條件爲true時,結果就會返回true,所有第一個條件判斷爲true就不會再執行下一個條件,這就造成短路現象。

第三:條件判斷爲真都有哪些

  1. 所有的數值都有真假性,除0以外都是真
  2. 字符串 除“”以外都爲假,其他都爲真
  3. undefine是假
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章