2017-02-13 43 views
-2

考虑下面的代码:的javascript:运营商之间的回报值差 - 和 - =

var x = 0; 

function decrement(num) { 
    return num--; 
} 

var y = decrement(x); 
console.log(y); // 0 

对战如下:

var x = 0; 

function decrement(num) { 
    return num -= 1; // this is the only difference between the functions 
} 

var y = decrement(x); 
console.log(y); // 0 

为什么从功能y--回报0不同时y -= 1回报-1

+1

我很好奇,为什么你也没有运行' - y';但你可能会在这个问题中找到答案:http://stackoverflow.com/questions/9549780/what-does-this-symbol-mean-in-javascript –

+0

@DavidThomas谢谢。没有意识到你不能在SO上轻松搜索单个字符。会解释为什么我一开始就找不到这个问题的答案。 – dtburgess

+2

而不是使用Stackoverflow作为参考,尝试使用实际参考作为参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators – Jan

回答

1

UPDATE:这是一个重复的问题,回答了在这里:What does this symbol mean in JavaScript?

我不能在SO找到这个问题的答案,并设法回答我的问题,同时研究并撰写的问题。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Decrement_(--)

的代码的例子是使用后缀递增运算符。后缀运算符将首先返回当前值,然后对其进行增加。

var x = 1; 
x++; // returns 1, x === 2  

这与前缀递增运算符相反,后者会首先递增该值,然后返回递增值。

var y = 1; 
--y // returns 0, y === 0 

关于+=-=赋值运算符:这些运营商也增加了值,然后返回增加后的值。

+0

退房(http:///stackoverflow.com/questions/3469885/somevariable-vs-somevariable-in-javascript) – rasmeister

0

记住前缀和后缀。当我做return num--时,我仅返回num的值,在我返回值后出现解析。

总之,运营商的优先