采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
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。为什么出错呢?
求解
个人认为是临时死区的问题
这里x=x,这两个x都是形参变量,只能获取实参的值,而不能像y=x里x这个自由变量一样,通过作用域链来获取值。
由于foo()没有参数,所以x=x里,x没有值。由于x正处于临时死区内,所有引用临时死区中绑定的行为都会报错。于是,就报错了
不知是否正确?
对的。亲测
什么对的?第二组代码进行结果没有出错的意思? 出错了
登录后可查看更多问答,登录/注册
ES6从零开始,量身设计的迷你案例,让你全面掌握ES6
1.3k 15
4.5k 13
2.6k 10
1.2k 9
1.3k 8
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号