【发布时间】:2021-02-18 08:48:06
【问题描述】:
此代码有效:
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);
是什么让左侧在赋值中有效,为什么它不能总是表达式?
【问题讨论】:
-
吹毛求疵且与问题无关:“这让我相信任何表达式都可以作为赋值的左侧” 2、4、6、8 是偶数数字。这让我相信所有的数字都是偶数。这个逻辑不成立。
-
@ThomasSablik 然后让我改写一下:第一种情况的哪个特殊性使它起作用,为什么?
-
是的,这个问题对我来说是完全清楚的。我也赞成它,因为我认为这是一个好问题。我说这是吹毛求疵,无关。但是你应该做出这样的假设。这可能会导致错误
-
“// 左边应该返回 foo2” - 它不返回变量,它返回值 的逻辑表达式。
-
表达式在左侧起作用,
(foo1 && foo2 && foo3)返回undefined,这使得左侧运算符对赋值无效。
标签: javascript variable-assignment