解构分配和变量交换

时间:2017-03-02 18:09:37

标签: javascript node.js variable-assignment destructuring

Javascript允许交换变量:

var x = 1
var y = 2

[x, y] = [y, x] // y = 1 , x = 2

结构化任务:

var a, b
[a, b] = [1, 2]

log(a) // 1
log(b) // 2

当使用变量交换代替析构化赋值时,尝试交换变量会分解:

var a, b
[a, b] = [1, 2] // a = 1, b = 2

[a, b] = [b, a] // TypeError: Cannot set property '2' of undefined

为什么?

1 个答案:

答案 0 :(得分:6)

如果您决定省略分号(没有判断,我也更喜欢它),请不要忘记用数组文字开头的行加;。有时,分号插入确实很重要,因为当你想要或期望它时它可能不会发生。



var a, b
;[a, b] = [1, 2]

;[a, b] = [b, a]

console.log(a, b)