ASI
在写JS之前,我一直在写Python,习惯了没有分号的代码。
刚好,JS为我们提供了 自动分号插入 Automatic Semicolon Insertion!...按理说这段代码的执行结果是输出1,但是实际上却报错了。...[b, a][c, d] = [d, c]
左边的[b, a][c, d] 实际上是 [2, 1][3, 4]
你可能会说卧槽,这他妈什么东西。...所以总的语句就变成了[a, b] = undefined = [d, c]
你可能又想吐槽undefined = [d, c]算什么鬼,实际上undefined是可以作为左操作数的,只不过静默失败。...这种没有报错的隐式错误,真在Leetcode刷题的时候 够你Debug半天了2333。
总结
实际上,完全不用为了ASI在一些情况下导致错误而每行都加上一个分号。