【发布时间】:2019-06-16 00:12:20
【问题描述】:
滥用赋值运算符的 RTL 关联性以便定义两个变量(第一个是对象)以便将第二个分配给(新)该对象的命名属性,它本身被分配给另一个值,因此不会生成 SyntaxError()?
我知道这听起来很复杂,但这里是代码:
var x = {}, y = x.l = 9; // generates no errors
console.log(x.l, y); // 9 9
自:
var t = {}, t.l = 9; // Syntax Error, no doubt because t is already defined
【问题讨论】:
-
将逗号更改为分号并阅读 comma operator 在 javascript 中的工作原理
-
这毫无意义。如果您正在创建一个对象字面量并且您知道将存在一个属性,请在原始分配中进行:
var t = { l: 9 }; -
字母数:
var x = {}, y = x.l = x.k = x.z = null而不是var x = {l : null, k: null, z: null}, y = x.l。当然这不是一个巨大的差异,但是在编写复杂的代码时,了解前一种方法是否是有效的 JS 会很有帮助。 -
注释中的代码没有问题,但也与有语法错误的代码不同。再次阅读逗号运算符的工作原理
标签: javascript object properties variable-declaration