有没有大佬指点一下,上边代码为什么等于下边代码呀?
回答
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)