老师我想问下,为什么这里是2个undefine,没传参数就不会向上查找x吗
来源:3-8 函数扩展

老衲还能打
2018-01-31
{
let x='test';
function test2(x,y=x){
console.log('作用域',x,y);
}
test2();
}
写回答
3回答
-
慕婉清8062065
2018-05-20
因为会去取最近声明的变量,let x='test'是函数test2的父作用域中的变量,但是在函数自己的作用域中已经声明的一个x变量,就近原则取当前作用域中的x。而这个x没有赋值,所有是undefined.我是这样理解的。
00 -
qq_又年_0
2018-03-05
个人理解吧,函数test2的参数就是声明在这个函数内的局部变量。代码执行时,首先声明了变量x,然后x赋值为test;之后函数test2开始执行,内部声明了变量x和y,x未赋值,y赋值为x。虽然都是x,但是两个并不是一个。函数内的为局部变量x,外面那个为全局变量x。然后函数执行后由于未传参数,函数内部的变量x就是未赋值状态,打印就是undefined,y=x,当然也是undefined。虽然我就是个菜鸟,但我听课后觉得这个课程的老师讲课水平有待提高,很多东西讲的并不透彻,不太好理解。
00 -
快乐动起来呀
2018-01-31
你的函数没纯参数肯定是undefined
00
相似问题