javascript作用域链的问题

在鸟哥:Javascript作用域原理 一文中摘录以下代码:

function factory() {
     var name = 'laruence';
     var intro = function(){
          alert('I am ' + name);
     }
     return intro;
}

function app(para){
     var name = para;
     var func = factory();
     func();
}

app('eve');

我是这么理解的,最后调用时intro的作用域链可能是这样的intro --> factory -->window。
那么,我把代码改成下面

function factory() {//去掉了factory对name的定义
     var intro = function(){
          console.log(name)
     }
     return intro;
}

function app(para){
     var name = para;
     var func = factory();
     func();
}

app('eve');

但是结果却输出了空字符串
我再定义一个全局的

var name = '1111'

然后执行,就输出了1111.
证明是之前的作用域链应该是正确的。
但是为什么在第二段代码会输出空字符串而不是undefined呢?

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