这段代码的工作原理:
let foo;
(foo) = 'bar';
console.log(foo);
这让我相信任何表达式都可以作为赋值的左侧,但是,此代码不起作用:
let foo1 = "bar";
let foo2;
let foo3;
(foo1 && foo2 && foo3) = "foobar"; // The left-hand side evaluates to undefined which can't be assigned
console.log(foo1, foo2, foo3);
是什么使得左侧在赋值中有效,为什么它不能总是表达式?
规范的相关位是here:
如果LeftHandSideExpression 的AssignmentTargetType 不简单,则为语法错误。
and here.
简化版本是(如果我们将解构放在一边)您可以将值分配给变量或对象的属性。
Given (foo)
,括号毫无意义,表达式只是一个变量名。这可以。
Given (foo1 && foo2 && foo3)
从变量中读取值,并使用&&
运算符,结果是value.
您不能将值分配给值,只能分配给属性或变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)