JS中的赋值运算符:一元还是二进制?

Assignment Operator in JS: Unary or Binary?

提问人:Cristian Lopez 提问时间:3/8/2023 更新时间:3/8/2023 访问量:55

问:

我们使用赋值运算符来为变量赋值,因此赋值是一个操作数,但变量本身算作另一个操作数??如果 not 只是一个一元运算符,这对我来说是有道理的,但如果不是,它是二进制的,但为什么呢?如果这是真的,为什么 var 被认为是操作数?=

JavaScript 运算符 assignment-operator

评论

4赞 Barmar 3/8/2023
左侧被视为用于解析目的的操作数。但它的行为与所有其他操作数不同,因为它是对可以更新的位置的引用,而不是值。在编译器术语中,它是 L 值而不是 R 值。
1赞 Barmar 3/8/2023
将其视为二进制运算符意味着在具有运算符优先级的递归下降解析器中不需要特殊处理。
0赞 trincot 3/8/2023
ECMAScript 规范不将左侧称为操作数,但您肯定可以。它是一个操作数,其当前值不起任何作用(就像逗号运算符一样),赋值是副作用,就像一元运算符有副作用一样。此外,还有其他赋值运算符,它们确实使用左侧变量的当前值,因此除了二进制之外,它们实际上无法看到(例如+++=)
0赞 Barmar 3/8/2023
我在解析这个问题时遇到了麻烦:“if not 只是一个一元运算符”。它是一个二进制运算符,因为左操作数是必需的。你不能只写,你必须写。= 1something = 1

答: 暂无答案