作用域链的问题?

 var name = 'laruence';
 function echo() {
      alert(name);
 }

 function env() {
      var name = 'eve';
      echo();
 }

 env(); 
 
 答案是多少
阅读 1.9k
3 个回答

echo函数自己的作用域没有定义name,所以它调用的上级全局name= 'laruence';
如果你在env函数里再写一个alert(name),那么就是name='eve',因为它本身的作用域定义了name.

总之。。这里env函数的作用域是不能影响echo函数的。。

当然是laruence,在函数定义的时候就定了,如果全局作用域下没有name,无论怎么调用都会报错。

laruence

函数执行的时候先在自己的作用域查找,没有的话才去上级作用域。
而上级作用域是看他在哪定义的,而不是在哪执行的。
所以会找到上级-> 全局下的 name

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题