首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >了解递增

了解递增
EN

Stack Overflow用户
提问于 2009-12-28 15:27:48
回答 7查看 1.7K关注 0票数 6

例如:

代码语言:javascript
运行
复制
var a = 123;
var b = a++;

现在a包含124b包含123

我知道b取a的值,然后a递增。然而,我不明白为什么会这样。为什么JavaScript的创建者想要这样做的主要原因。除了让新手感到困惑之外,这样做还有什么好处?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-12-28 15:40:08

这就是为什么它被称为“后增量运算符”。从本质上讲,一切都是一个表达式,它会产生一个值。a + 1是一个导致值124的表达式。如果使用b = a + 1将其赋给b,则b的值为124。如果你没有将结果赋值给任何东西,a + 1仍然会得到值124,它会立即被丢弃,因为你不会在任何地方“捕捉”它。

顺便说一句,即使是b = a + 1也是一个返回124的表达式。赋值表达式的结果值是赋值的值。这就是为什么c = b = a + 1会像你预期的那样工作。

无论如何,使用++--的表达式的特殊之处在于,除了返回值之外,++运算符还直接修改变量。所以当你执行b = a++时,表达式a++返回值123,并递增apost incrementor首先返回值,然后递增,而pre incrementor ++a first 递增,然后返回值。如果您只编写a++本身而没有赋值,您将不会注意到其中的区别。这是通常使用a++的方式,作为a = a + 1的缩写。

这是非常标准的。

票数 9
EN

Stack Overflow用户

发布于 2009-12-28 15:32:49

请注意,您还可以编写

代码语言:javascript
运行
复制
b = ++a;

这可能会产生你所期望的效果。

重要的是要意识到这里有两件事:赋值和增量,语言应该定义它们发生的顺序。因为我们有++aa++,所以它们应该有不同的含义是有道理的。

对于我们这些有C背景的人来说,这是很自然的。如果PHP的行为不同,我们可能会想,为什么PHP选择背离我们所习惯的。

票数 5
EN

Stack Overflow用户

发布于 2009-12-28 15:33:11

++可以用作后增量运算符,如果在variable之前使用,也可以用作前增量运算符。

代码语言:javascript
运行
复制
var b = ++a;

然后,首先将变量a递增,然后将递增后的值赋给b

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

https://stackoverflow.com/questions/1968371

复制
相关文章

相似问题

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