JavaScript運算符:遞增和遞減(++i,--i 和 i++,i-- 的區別)


遞增和遞減操作符直接借鑒自C,而且各有兩個版本:前置型 (遞增 ++i ,遞減 --i )和 后置型 (遞增 i++ ,遞減 i-- )。書本上對兩者的定義是:前置型應該位於要操作的變量之前,而后置型則應該位於要操作的變量之后。what?怎么那么難理解,換一種通俗易懂的語言去描述應該是咋樣的......,結合提供代碼,一頓白眼.....

前置型 (遞增 ++i ,遞減 --i ):  不就是先自身計算,再賦值給變量(先計算自己身上增加,減少了多少錢,再把它存到自己的銀行卡里或者還給債主);
后置型 (遞增 i++ ,遞減 i-- ):不就是先將自身的值賦值給變量,然后再自身計算(先把自己原本身上的錢存到自己的銀行卡里或者還給債主,然后在計算在原來基礎上自己增加,減少了多少錢);

懂了沒?假設還不懂,那現在開始給你看看兩種方式下,你的錢是怎么流通的哈:

 一、前置型(遞增++i,遞減--i)

假設你有100塊(變量i=100) ,那么前置遞增為 ++i 。
var i = 100;
alert(i);         => 100
++i;      => 101   先計算自己身上增加了多少錢
alert(i);         => 101       再把它存到自己的銀行卡里或者還給債主

也相當於如下的操作效果:

var i = 100;
i=i+1;   => i=100+1=101;

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

var age = 29;
var anotherAge = --age + 2;
console.log(age)          // 28 (age = age - 1)
console.log(anotherAge);       // 30 (anotherAge = age - 1 + 2)

這個例子中變量 anotherAge的初始值等於變量 age 的值前置遞減( age = age - 1 )之后加上 2 。就是age自身先執行減法操作(age=age-1), age 的值變成了28,然后再加上 2,值就是30。

另外在JavaScript運算符中,前置遞增( ++i )和遞減( --i )與執行語句的優先級相同,因此整個語句會 從左至右被求值 。再來看一個示例:

var num1=2;

var num2=20;

var num3=++num1 + num2;

var num4=num1+num2;

alert(num1);                   // 3

alert(num3);       // 23  

alert(num4);                 //  23

在這里,num3等於23,是因為num1先自身執行了加法操作才與num2相加。而變量num4也等於23,是因為相應的加法操作也使用了num1自身執行了加法操作后的值。

 

二、后置型(遞增i++,遞減i--)

  假設你有100塊(變量i=100) ,那么前置遞增為 ++i 。
  var i = 100;
  alert(i);  => 100         
  i++;    => 100     先把自己原本身上的錢存到自己的銀行卡里或者還給債主
  alert(i);  => 101            然后在計算在原來基礎上自己增加,減少后一共還有多少錢

把遞增操作符放在變量后面並不會改變語句的結果,因為遞增是這條語句的唯一操作。但是當語句中還包含其他操作時,區別就會不一樣了。看下面的例子:
var num1=2;
var num2=20;
var num3=num1++  +  num2;
var num4=num1+num2;
alert(num1);             =>  3  
alert(num3);             =>  22 // var i; i=num1=2; num1=num+1=3 ; num3=i + num2;
alert(num4);             =>  23 //  num1+num2;

 

前置遞增(遞減)&&后置遞增(遞減)

1.前置遞增(++): 在變量的前面,先自身執行加法操作后在賦值(++i);

2.后置遞增(++): 在變量的后面,先賦值后在執行加法操作(i++);

3.前置遞減(--): 在變量的前面,先自身執行減法操作后在賦值(--i);

4.后置遞減(--): 在變量的前面,賦值后在執行減法操作(i--);


總結,希望這篇文章對你理解遞增和遞減(++i,--i 和 i++,i-- 的區別)有幫助,分享技術,分享快樂!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM