这个棘手的js赋值如何工作?

时间:2018-06-07 13:10:48

标签: javascript

 let at = 1;
 console.log(at + - + + + - ++at);

这实际上如何运作? 我将不胜感激任何帮助。

1 个答案:

答案 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