首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么解构赋值的右侧忽略了在其左侧进行的索引增量

为什么解构赋值的右侧忽略了在其左侧进行的索引增量
EN

Stack Overflow用户
提问于 2020-12-21 09:08:51
回答 1查看 104关注 0票数 3

由于后缀++在语言中存在,因此下面的语句将始终使v[0] ← v[1]

代码语言:javascript
复制
v = [8, 7, 6, 5];
i = 0;

v[i++] = v[i];

console.log(v[0]); // gives 7

现在解构任务就不同了--我只能用Chrome和Firefox来测试:

代码语言:javascript
复制
v = [8, 7, 6, 5];
i = 0;

[v[i++]] = [v[i]]; // does "v[0] ← v[0]"

console.log(v[0]); // gives 8

我在解构赋值的左侧尝试了许多其他类型的变量赋值,但所有这些变量赋值都被主解构赋值的右侧忽略。然后在解构之后,新的变量值又回到了那里。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-21 18:06:21

v[i++] = v[i];中,JavaScript通常是从左到右解释的。

只有在解构赋值中,才会在值之后对目标进行求值,因为使用默认值时,求值可能取决于值本身。预先评估属性名称可能是可能的,但会更加复杂,导致明显的不一致。

在任何情况下,只要不要在属性名计算中改变你的变量,无论你是否知道确切的语义,这都会让读者感到困惑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65386366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档