2015-11-03 253 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