以增量为单位,为什么传递变量的值而不是传递值和增量?

时间:2019-01-10 18:39:38

标签: javascript web browser

这是我的代码:

len(x)

输出:var x = 3; var y = x++; y += 1;

我知道计算机正确,但是我不确定为什么计算机正确。 从 x y 分配了值 3 ,然后在第2行中将其递增为 4 。第3行的输出应该是 5 ,对吗?

根据我的阅读,在增加发生之前,已为 y 分配了 x 的值,但是当发生这种情况时,为什么 y 不变吗?

3 个答案:

答案 0 :(得分:3)

在分配y = x++;中,首先将 y 的值分配给 x ,然后将变量 x 递增1通过执行此操作, y 变为3,x为4。然后在运行y + = 1后,计算机将计算3 + 1 = 4

如果您期望 y 为5,则应该进行y = ++x;。这样, x 首先将增加1,然后分配给 y ,因此我们将在y + = 1(4 + 1)之后得到y = 4和x = 4 = 5)

答案 1 :(得分:1)

预递增++x)和后递增x++)之间是有区别的。

预增运算符用于在表达式中使用变量之前将其值递增。在预递增中,值首先递增,然后在表达式内部使用。假设我们有:

a = ++x;

在这里,如果“ x”的值为10,则“ a”的值为11,因为在表达式中使用“ x”之前会对其进行修改。这等效于:

x = x + 1;
a = x;

使用后递增运算符可在完全执行使用后递增的表达式后,递增变量的值。在后递增中,值首先在表达式中使用,然后递增。假设我们有:

a = x++;

在这里,假设'x'的值为10,则变量'a'的值为10,因为使用了'x'的旧值。这等效于:

a = x;
x = x + 1;

您可以在实习生那里了解更多相关信息(例如herehere)。

干杯!

// Post-increment example
console.log("post-increment examples");
let x = 10;
a = x++;
console.log(x, a);

x = 10;
a = x;
x = x + 1;
console.log(x, a);

// Pre-increment example
console.log("pre-increment examples");
x = 10;
a = ++x;
console.log(x, a);

x = 10;
x = x + 1;
a = x;
console.log(x, a);

答案 2 :(得分:0)

x++返回值,然后加1。请参见:

var x = 3;
var y = x++;// x return 3 and then add 1, y is 3 
y += 1;//3 + 1 = 4
console.log(y)
console.log(x)//x return 4