采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
let x = 1;
function
foo(y = x) {};
foo()
上面的代码是不出错的,首先x=1,调用函数时,y=x=1,相当于y的默认值是1。没有问题
foo(x = x) {};
将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.1k 15
4.3k 13
2.3k 10
1.0k 9
1.1k 8
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号