我只是在学习Javascript而且我不明白为什么下面的等式等于23.我会说它应该是24。
在我的在线课程中,答案为23的原因解释如下:
“num1被添加到3然后增加1(20 + 3)”这个答案对我来说毫无意义。
var num1=20;
num2=num1++ +3;
alert (num2)
任何帮助将不胜感激!
答案 0 :(得分:2)
var num1=20;
num2=num1++ +3;
这就是说:将num1
的值加3并将结果分配给num2
。然后递增num1
。
操作完成后num1 == 21
和num2 == 23
。
结果是23,正如您所发现的那样。
正是这种混乱导致了前后修复操作员的沮丧。
答案 1 :(得分:0)
基本上,postfix ++(特别是++ AFTER变量)的方式就像一个特殊的函数。它执行2个动作
将它与前缀运算符++ num1进行比较,后者执行以下两个操作:
如果在代码中看到这一点有帮助,您可以将其视为
function PlusPlus(num)
{
var oldValue = num;
num = num + 1;
return oldValue;
}
虽然这实际上并没有按照你想要的方式执行,因为传递了值,但这不是重点。记住前缀和后缀之间的区别可能很棘手,但要记住的主要事情是postfix来自变量,并在行中完成其他所有操作后更改它,而前缀来自变量之前,并在之前更改它别的完成了。
答案 2 :(得分:0)
后缀增量基本上是这样的:
var num2 = num1 + 3;
num1 = num1 + 1;
等效代码就是这样:
var num1 = 20;
var num2 = num1 + 3; // 20 + 3 = 23
num1 = num1 + 1; // 20 + 1 = 21
alert(num2); // alerts 23
前缀增量运算符(我知道这没有被问到,但它可能有用)的工作原理如下:
/* Original code */
var num1 = 20;
var num2 = ++num1 + 3;
alert(num2);
/* Broken down code */
var num1 = 20;
num1 = num1 + 1; // 20 + 1 = 21
var num2 = num1 + 3; // 21 + 3 = 24
alert(num2) // alerts 24
继续问你是否还有其他问题。我很高兴回答他们。