关于ES6函数默认值的疑问
来源:3-8 函数扩展

ehuo0123
2017-07-26
let x = 1; function foo(y = x) {}; foo()
上面的代码是不出错的,首先x=1,调用函数时,y=x=1,相当于y的默认值是1。没有问题
let x = 1; function foo(x = x) {}; foo()
将y=x,替换成x=x,为什么就出错了?首先x=1,调用函数时,x=x=1,相当于x的默认值是1。为什么出错呢?
求解
写回答
2回答
-
ehuo0123
提问者
2017-07-26
个人认为是临时死区的问题
这里x=x,这两个x都是形参变量,只能获取实参的值,而不能像y=x里x这个自由变量一样,通过作用域链来获取值。
由于foo()没有参数,所以x=x里,x没有值。由于x正处于临时死区内,所有引用临时死区中绑定的行为都会报错。于是,就报错了
不知是否正确?
00 -
勿忘心安008
2017-07-26
对的。亲测
012017-07-26
相似问题