解构赋值和变量交换
Destructuring assignment and variable swapping
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
这是为什么?
如果您决定省略分号(没有判断,我也喜欢这样),请不要忘记在以数组字面量开头的行前加上 ;
。有时,分号插入 确实 很重要,因为它可能不会在您想要或期望的时候出现。
var a, b
;[a, b] = [1, 2]
;[a, b] = [b, a]
console.log(a, b)
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
这是为什么?
如果您决定省略分号(没有判断,我也喜欢这样),请不要忘记在以数组字面量开头的行前加上 ;
。有时,分号插入 确实 很重要,因为它可能不会在您想要或期望的时候出现。
var a, b
;[a, b] = [1, 2]
;[a, b] = [b, a]
console.log(a, b)