解构赋值
来源: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
00
相似问题