我正在学习关于JavaScript的考试。我也对C和Perl有了一些了解,所以我熟悉所有三种语言的前缀和后缀表示法。为什么JavaScript的后缀表示法与C和Perl不同?
我做了一个在线模拟考试吧和一个错误,我做了评估下面的代码:
var x = 10;
x += x--;
现在,我认为这将计算结果为19,因为这将是10 + 10,然后再减去1得到9.但是我得到的反馈是它是错误的,它实际上评估为20.我认为这听起来有点可疑,所以我在HTML文档中进行了测试,结果又出来了20。然后,我尝试了C和Perl中的等价物,并将其评估为19.
任何人都可以向我解释为什么JavaScript在20其他语言将其评估为19时评估答案为20?我从测试得到的回答却不太清楚对我说:
增量++ 和递减 - 运营商可以放置 之前或之后的操作数。如果将运算符的增量或减量运算放在操作数之前,则操作立即发生。 如果递增或递减操作符位于操作数之后,则操作数值的更改直到下一次在程序中访问操作数 才会显现。因此表达式x + = x--相当于X = X + 10,其结果为20
啊,我怎么讨厌这种愚蠢的“疑难杂症”的问题!后缀增量/减量运算符不应该出现在包含另一个变量引用(in | de)的表达式中。在C中为 – 2010-02-14 22:33:44
,这是未定义的行为;包含这段代码的任何代码都是固有的破坏 – Christoph 2010-02-14 22:34:23
'+ ='没有引入序列点吗? – 2010-02-14 22:47:41