2015-11-03 291 views
1

我在訓練我的Javascript編程自我,有鬧明白的2個結果的輸出,例如:奇怪的輸出結果

1) var num = 1; 
var result = num++ * 10 +1; 
console.log(result); 

在拳我認爲輸出是「21」,因爲它對num增加1值,而且這些複製總是第一個計算的,但是比我注意到結果是11,比我想象的那樣是因爲num是不可變的(不確定)。

比出現我這樣的功能:

function A(param){ 
     var m = param; 
     m = m+10; 
     return m; 
    } 
    console.log(A(10)); 

和函數的結果是20

這混淆了我很多,我無法理解什麼錯誤,可有人給我解釋一下剛纔什麼發生了什麼?

+0

[遞增和遞減運算符(https://en.wikipedia.org/wiki/Increment_and_decrement_operators) – Satpal

回答

2

那麼,問題是num++返回值num之前,它是增加。其實你的表情看起來像:1 * 10 + 1

你應該使用++num,該語句將返回num值後,將遞增:

var result = ++num * 10 + 1; // 21 
0

num不是不可變的。

m++的輸出爲m(增量前的值)。如果您想要增量後的值,請使用++m

var num = 1; 
console.log(++num); 

2,而

var num = 1; 
console.log(num++); 

1