Why is my Javascript increment operator (++) not working properly in my addOne function [duplicate]

。_饼干妹妹 提交于 2020-01-29 14:18:26

问题


Please can someone explain to me why my addOne function doesn't work with the increment operator (++). Please see my code below.

// 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?

回答1:


There are two increment operators: prefix and postfix.

The postfix operator increments the variable after it is evaluated. For example, the following code produces 11, because it adds 5 and 6:

var a = 5;
(a++) + (a++)

The prefix operator increments the variable before it is evaluated. Sounds like that is what you want. The following code produces 13, because it adds 6 and 7:

var a = 5;
(++a) + (++a)

So your code should be:

function addOne(num) {
  return ++num;
}

console.log(addOne(6));



回答2:


num+1 increments the number before the current expression is evaluted so log will be the number after increment, but num++ increments the number after the expression is evaluated, so log will log the num before increment then increment it.

if you like to do the same functionality as num+1 you may use ++num and it will do the same.

They both increment the number. ++i is equivalent to i = i + 1.

i++ and ++i are very similar but not exactly the same. Both increment the number, but ++i increments the number before the current expression is evaluted, whereas i++ increments the number after the expression is evaluated. See this question




回答3:


That is not the correct use of ++, but also a lot of people would not recommend using ++ at all. ++ mutates the variable and returns its previous value. Try the example below.

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);


来源:https://stackoverflow.com/questions/39706443/why-is-my-javascript-increment-operator-not-working-properly-in-my-addone-f

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!