ASI
在写JS之前,我一直在写Python,习惯了没有分号的代码。
刚好,JS为我们提供了 自动分号插入 Automatic Semicolon Insertion!...利用解构语语法swap的时候
let a = 1, b = 2
[a, b] = [b, a]
console.log(`a: ${a}`)
console.log(`b: ${b}`)
很容易看出这段代码的意思是交换变量...然后它后面的[3, 4]实际上是一个下标选择,里面的3, 4会被看成一个逗号表达式,它的值是最后一个元素,即4。...所以[2, 1][3, 4]可以写为[1, 2][4],所以最后的值是undefined。...然后值得注意的是,undefined = [d, c]虽然对undefined本身没有影响,但是它本身作为一个赋值表达式也是有值的,它的值就是[d, c]
故最后运行的表达式实际上是这样的[a, b]