首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Javascript增量运算符(++)在我的addOne函数中不能正常工作

问为什么我的Javascript增量运算符(++)在我的addOne函数中不能正常工作
EN

Stack Overflow用户
提问于 2016-09-26 23:13:02
回答 3查看 10.8K关注 0票数 7

请给我解释一下为什么我的addOne函数不能与增量运算符(++)一起工作。请看我下面的代码。

代码语言:javascript
复制
// 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?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-26 23:17:56

有两个增量运算符:前缀和后缀。

后缀运算符会在变量求值后递增该变量。例如,下面的代码生成11,因为它将5和6相加:

代码语言:javascript
复制
var a = 5;
(a++) + (a++)

前缀运算符会在计算变量之前对其进行递增。听起来这就是你想要的。下面的代码生成13,因为它将6和7相加:

代码语言:javascript
复制
var a = 5;
(++a) + (++a)

所以你的代码应该是:

代码语言:javascript
复制
function addOne(num) {
  return ++num;
}

console.log(addOne(6));
票数 14
EN

Stack Overflow用户

发布于 2016-09-26 23:38:26

这不是++的正确用法,而且很多人根本不推荐使用++。++会改变变量并返回其先前的值。尝试下面的示例。

代码语言:javascript
复制
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);
票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39706443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档