请给我解释一下为什么我的addOne函数不能与增量运算符(++)一起工作。请看我下面的代码。
// addOne Function
function addOne(num){
return num + 1
}
log(addOne(6)) => 7
// same function with ++ operator
function addOne(num){
return num++
}
log(addOne(6)) => 6
// Question - why am I getting 6 instead of 7 when I use ++ operator?发布于 2016-09-26 23:17:56
有两个增量运算符:前缀和后缀。
后缀运算符会在变量求值后递增该变量。例如,下面的代码生成11,因为它将5和6相加:
var a = 5;
(a++) + (a++)前缀运算符会在计算变量之前对其进行递增。听起来这就是你想要的。下面的代码生成13,因为它将6和7相加:
var a = 5;
(++a) + (++a)所以你的代码应该是:
function addOne(num) {
return ++num;
}
console.log(addOne(6));发布于 2016-09-26 23:38:26
这不是++的正确用法,而且很多人根本不推荐使用++。++会改变变量并返回其先前的值。尝试下面的示例。
var two = 2;
var three = two += 1;
alert(two + ' ' + three);
two = 2;
three = two++;
alert(two + ' ' + three);
two = 2;
three = two + 1;
alert(two + ' ' + three);发布于 2016-09-26 23:21:27
num+1在计算当前表达式之前递增数字,因此log将是递增后的数字,但是num++在表达式求值之后递增数字,因此log将记录递增前的数字,然后递增它。
如果你想做与num+1相同的功能,你可以使用++num,它也会做同样的事情。
,它们都会递增数字。++i等同于i=i+ 1。
i++和++i非常相似,但并不完全相同。两者都会使数字递增,但++i在计算当前表达式之前递增数字,而i++在表达式求值后递增数字。See this question
https://stackoverflow.com/questions/39706443
复制相似问题