ES6 数组解构异常
在 ES6 中,数组解构允许将数组元素方便地分配给变量。但是,在未正确使用分号的情况下进行解构时,会出现意外行为。
请考虑以下代码:
<code class="js">let a, b, c [a, b] = ['A', 'B'] [b, c] = ['BB', 'C'] console.log(`a=${a} b=${b} c=${c}`)</code>
预期输出:
实际输出:
解释
意外的行为是由于两个解构语句之间缺少分号而引起的。在 ES6 中,分号不会自动插入。因此,代码被解析为一个大语句:
<code class="js">let a = undefined, b = undefined, c = undefined; [a, b] = (['A', 'B'] [(b, c)] = ['BB', 'C']); console.log(`a=${a} b=${b} c=${c}`);</code>
在该语句中,逗号运算符计算出括号中的最后一个表达式,即数组 ['BB', 'C '] 到左侧 (b, c)。结果,b 收到 'BB',c 收到 'C'。
但是,第二个解构赋值被错误地分配给空数组文字 ([]),而不是数组 ['BB', ' C']。这是因为数组文字括在括号中,行首没有分号。
要解决此问题,请使用分号分隔各个赋值:
<code class="js">let a, b, c; [a, b] = ['A', 'B']; [b, c] = ['BB', 'C']; console.log(`a=${a} b=${b} c=${c}`);</code>
使用正确使用分号,可以获得预期的输出。
以上是ES6 数组解构异常:为什么分号很重要?的详细内容。更多信息请关注PHP中文网其他相关文章!