在 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>
为了避免此类误解并确保正确评估,必须在以 (、[、/、、- 或 `.
开头的每一行的开头显式包含分号以上是为什么 ES6 中数组解构会导致意外值?的详细内容。更多信息请关注PHP中文网其他相关文章!