首页 > web前端 > js教程 > 为什么 ES6 中数组解构会导致意外值?

为什么 ES6 中数组解构会导致意外值?

Patricia Arquette
发布: 2024-10-24 06:06:30
原创
1033 人浏览过

Why Does Array Destructuring Result in Unexpected Values in ES6?

ES6 中数组解构的怪癖

在 ES6 中,数组解构提供了一种从数组中提取和赋值的简洁语法。但是,某些构造可能会导致意外结果。

提供的代码片段提出了一个问题:

为什么此代码在数组解构后会导致意外值?

<code class="javascript">let a, b, c;
[a, b] = ['A', 'B'];
[b, c] = ['BB', 'C'];
console.log(`a=${a} b=${b} c=${c}`);</code>
登录后复制

预期: a=A, b=BB, c=C

实际: a=BB, b=C, c= undefined

答案:

问题在于省略了分号,分号通常会将这些行分隔为不同的语句。如果没有分号,代码将被解析为单个语句并以不同的顺序进行计算:

<code class="javascript">let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);</code>
登录后复制
  • [a, b] = …;是预期的解构赋值。
  • (… = ['BB', 'C']) 是一个赋值表达式,它将数组分配到左侧并计算结果为数组。
  • 'A', 'B' 是数组文字上的属性引用。
  • (b, c) 使用逗号运算符,计算结果为 c(未定义)。

为了避免此类误解并确保正确评估,必须在以 (、[、/、、- 或 `.

开头的每一行的开头显式包含分号

以上是为什么 ES6 中数组解构会导致意外值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板