function f() {
console.log('aaa')
}
let [ x = f()] = [1]
// 1. x= f() 此处优先计算,生命被提升 相当于 var x = f()
// 2. let 此处x被重新定义 相当于 let [x] = [1] 即 let x=1 将不对数据进行输出
// 代码最终效果相当于 let x = 1
let x
if([1][0] === undefined) { //此处由于[1][0]这个代表获取([1])数组第一个元素等式不成立
x= f()
} else {
x= [1][0] // 此处代码将会被执行
}
// 代码最终效果相当于 let x = 1
// 以上两端代码等价
// 均执行以下代码可进行验证
console.log(x, typeof x)
我想问一下这个[1][0]表示的是二维数组吗,为什么console.log([1][0])可以得到结果为1呢
@流浪猫猫: 不表示二维数组前面有变量的情况之下才是二维数组,就相当于取[1]这个数组的第一位
@魔露西:
如果只是要执行x=1这一步,为什么不直接这么写:
let x
if(undefined) {
x= f()
} else {
x= 1
}
@魔露西: 上边代码能理解,就是下边它[1][0] === undefined这么判断就看懵了
@流浪猫猫: 你可以想象成 var arr = [1]; console.log(arr[0]) ,所以结果为什么为1了
@流浪猫猫: 不知道这应该是个题目把,正常应该用不到这种神奇的操作
直接输出以下就好啦console.log([1][0] === undefined) 会的到接过false ,肯定绘制false至少[1][0]还是一个数字,undefined都不是个数
@魔露西: 阮老师在es6教程对解构赋值表达式作解释的
@魔露西: [1][0]这个学到了,多谢啦
@流浪猫猫: 长见识了,第一表示数组内容 后一个表示数组第几个