JS中的赋值运算符:一元还是二元?
赋值运算符
=是二元运算符的原因 赋值运算符=在绝大多数编程语言中属于二元运算符,变量完全算作一个合法的操作数,原因如下:
- 从语法结构看,赋值表达式的标准形式是
左操作数 = 右操作数,必须同时具备两个操作数才能构成完整的合法表达式。变量作为左操作数,本质是一个可修改的左值(lvalue)——它对应一块程序可读写的内存空间,是赋值操作的“目标载体”。 - 从运算逻辑看,赋值操作包含两个核心步骤:首先计算右操作数的结果值,再将该值写入左操作数指向的内存地址。这两个部分缺一不可:没有左操作数就没有存储值的目标,没有右操作数就没有要存储的内容,二者共同构成了赋值运算的完整逻辑。
- 对比一元运算符(比如自增
++、自减--),这类运算符只需要单个操作数,操作直接作用于该操作数本身;而赋值必须明确“赋值目标”和“赋值内容”两个要素,因此必然是二元运算符。
举个直观的例子:x = 10中,x是左操作数(代表内存中的某个存储位置),10是右操作数(待存储的常量值),整个表达式完成的是“将10写入x对应的内存”这个动作,同时表达式本身会返回右操作数的值,这也是链式赋值a = b = 10能生效的原因(本质是a = (b = 10),先完成b=10的赋值,再把返回值10赋给a)。
内容的提问来源于stack exchange,提问作者Cristian Lopez
相关产品推荐
相关产品推荐

