老师我想问下,为什么这里是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.我是这样理解的。

0
0

qq_又年_0

2018-03-05

个人理解吧,函数test2的参数就是声明在这个函数内的局部变量。代码执行时,首先声明了变量x,然后x赋值为test;之后函数test2开始执行,内部声明了变量x和y,x未赋值,y赋值为x。虽然都是x,但是两个并不是一个。函数内的为局部变量x,外面那个为全局变量x。然后函数执行后由于未传参数,函数内部的变量x就是未赋值状态,打印就是undefined,y=x,当然也是undefined。虽然我就是个菜鸟,但我听课后觉得这个课程的老师讲课水平有待提高,很多东西讲的并不透彻,不太好理解。


0
0

快乐动起来呀

2018-01-31

你的函数没纯参数肯定是undefined

0
0

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程