JavaScript 赋值更改了加法操作语义
JavaScript assignment changes the addition operation semantics?
如果你计算{} + 1
你会得到1
,但是如果你将相同的表达式分配给一个变量,比如x = {} + 1
,变量将保存一个字符串"[object Object]1"
。
为什么赋值会更改右侧表达式的语义?右侧表达式不应该是"上下文无关"的吗?
{} + 1
被解释为后跟 +1
的代码块,其计算结果为 1
。奥托:
x = {} + 1
被评估为new Object()
加1
如果您将原始对账单更改为:
new Object() + 1
结果,您将看到"[object Object]1"
。
相关文章:
- Javascript变量赋值|
- 无法为打字稿字典赋值
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何通过json对象数组为嵌套对象赋值
- 赋值后的回调函数
- ||(OR)运算符如何在赋值中工作
- 可以使用属性赋值实现多个函数
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 如何在javascript中为全局变量赋值
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- JavaScript:在嵌套循环中为数组赋值
- 未设置变量的赋值| jQuery的作用是什么
- Javascript赋值运算符的奇怪行为
- JavaScript 赋值更改了加法操作语义
- Do赋值操作总是从右向左复制数据
- JavaScript中赋值操作返回赋值的意图/想法是什么?
- Clojurescript中的Javascript互操作赋值
- 带有操作*=难题的JavaScript赋值
- 表单操作赋值 - 对象不支持此属性或方法