解构赋值

来源:3-2 解构赋值

慕运维5828042

2017-04-29

{

let [x = y, y = 1] = [];

console.log(x,y);

}

这个为什么运行结果是undefined和1。按照ES6的语法应该是直接报错吧。

写回答

1回答

小王子抓猫咪

2017-04-29

在浏览器chrome里直接运行得到的答案是y未定义,报错。因为chrome已经支持es6的let 语法了。

但是如果你用var [x=y, y=1] = [] 在chrome里面运行,得到的结果就是undefined 和 1

首先从这个地方可以看出,用let声明的变量不存在提升,所以在定义y之前使用了y 就会报错。

但是如果你用var 就不会报错,这是因为var声明的变量是存在变量提升的。


接着解释为什么你运行出来的结果会是undefined 1 呢?

你肯定是用babel转换器将es6转成了es5 在es5里面没有let所以转码之后使用的是var。 所以得到undefined


所以按照es6的语法,这是会报错的。但是你如果转码成es5了就会显示undefined

0
0

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程