【发布时间】:2014-02-04 03:35:47
【问题描述】:
我只是在学习 Javascript,我不明白为什么下面的等式等于 23。我会说应该是 24。
在我的网课中,为什么答案是23的解释如下:
“num1 加到 3,然后递增 1(20+3)”这个答案对我来说毫无意义。
var num1=20;
num2=num1++ +3;
alert (num2)
任何帮助将不胜感激!
【问题讨论】:
标签: javascript operators increment
我只是在学习 Javascript,我不明白为什么下面的等式等于 23。我会说应该是 24。
在我的网课中,为什么答案是23的解释如下:
“num1 加到 3,然后递增 1(20+3)”这个答案对我来说毫无意义。
var num1=20;
num2=num1++ +3;
alert (num2)
任何帮助将不胜感激!
【问题讨论】:
标签: javascript operators increment
var num1=20;
num2=num1++ +3;
这就是说:将num1 的值加3,并将结果分配给num2。然后递增num1。
操作完成后num1 == 21和num2 == 23。
如你所见,结果是 23。
正是这种混淆导致了修复前和修复后操作员的气馁。
【讨论】:
++num1 +3 会产生问题中预期的结果。
基本上,后缀 ++(特别是 ++ AFTER 一个变量)的方式就像一个特殊的函数。它执行 2 个动作
将此与执行以下两个操作的前缀运算符 ++num1 进行比较:
如果它有助于在代码中看到这一点,您可以将其视为
function PlusPlus(num)
{
var oldValue = num;
num = num + 1;
return oldValue;
}
虽然由于值传递,这实际上不会按照您想要的方式执行,但这不是重点。记住前缀和后缀之间的区别可能很棘手,但要记住的主要事情是后缀出现在变量之后,并在行中其他所有操作完成后更改它,而前缀出现在变量之前,并在任何事情之前更改它否则完成。
【讨论】:
后缀增量基本上是这样做的:
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
继续询问您是否还有其他问题。我会很高兴地回答他们。
【讨论】: