let at = 1;
console.log(at + - + + + - ++at);
这实际上如何运作? 我将不胜感激任何帮助。
答案 0 :(得分:10)
它没有你想象的那么深。 :-)就是这样:
console.log(at + ++at);
系列- + + + -
只是一群一元-
和+
。 +
不执行任何操作(在这种情况下,因为它们在++at
的结果上运行,这已经是一个数字),并且两个-
相互抵消。
所以查看at + ++at
:二进制+
(加法)计算其左手操作数,然后计算右手操作数,然后将它们加在一起(当两者都是数字时)。左侧操作数为at
,其值为1
;右侧为++at
,将at
增加到2
并将新值(2
)作为结果。所以,1 + 2
= 3
。
我们可以通过删除可选空格使其更加混乱,只留下区分+
和++
所需的内容:
console.log(at+-+ + +-++at);
......但我们不会那样对待追随我们的人,对吗? : - )
如果您想查看表达式如何分解的详细信息,Esprima人员会有一个方便的页面显示您粘贴的任何内容的解析树:http://esprima.org/demo/parse.html