首页 新闻 搜索 专区 学院

有没有大佬指点一下,上边代码为什么等于下边代码呀?

0
[已解决问题] 解决于 2021-09-23 15:02

流浪猫猫的主页 流浪猫猫 | 菜鸟二级 | 园豆:208
提问于:2021-04-19 10:39
< >
分享
最佳答案
0
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)
奖励园豆:5
魔露西 | 小虾三级 |园豆:542 | 2021-04-19 11:29

我想问一下这个[1][0]表示的是二维数组吗,为什么console.log([1][0])可以得到结果为1呢

流浪猫猫 | 园豆:208 (菜鸟二级) | 2021-04-19 11:45

@流浪猫猫: 不表示二维数组前面有变量的情况之下才是二维数组,就相当于取[1]这个数组的第一位

魔露西 | 园豆:542 (小虾三级) | 2021-04-19 11:46

@魔露西:
如果只是要执行x=1这一步,为什么不直接这么写:
let x
if(undefined) {
x= f()
} else {
x= 1
}

流浪猫猫 | 园豆:208 (菜鸟二级) | 2021-04-19 11:49

@魔露西: 上边代码能理解,就是下边它[1][0] === undefined这么判断就看懵了

流浪猫猫 | 园豆:208 (菜鸟二级) | 2021-04-19 11:51

@流浪猫猫: 你可以想象成 var arr = [1]; console.log(arr[0]) ,所以结果为什么为1了

mingsn | 园豆:200 (初学一级) | 2021-04-19 11:52

@流浪猫猫: 不知道这应该是个题目把,正常应该用不到这种神奇的操作

魔露西 | 园豆:542 (小虾三级) | 2021-04-19 11:54

直接输出以下就好啦console.log([1][0] === undefined) 会的到接过false ,肯定绘制false至少[1][0]还是一个数字,undefined都不是个数

魔露西 | 园豆:542 (小虾三级) | 2021-04-19 11:56

@魔露西: 阮老师在es6教程对解构赋值表达式作解释的

流浪猫猫 | 园豆:208 (菜鸟二级) | 2021-04-19 12:00

@魔露西: [1][0]这个学到了,多谢啦

流浪猫猫 | 园豆:208 (菜鸟二级) | 2021-04-19 12:01

@流浪猫猫: 长见识了,第一表示数组内容 后一个表示数组第几个

winds_随风 | 园豆:151 (初学一级) | 2021-04-19 14:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册