javascript作用域链的问题
PHPz
PHPz 2017-04-10 15:12:26
[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呢?

PHPz
PHPz

学习是最好的投资!

全部回复(1)
PHP中文网
  1. 换个名字就好了,https://developer.mozilla.org/zh-CN/docs/Web/API/Window/name
  2. 正常情况下返回的也不是 undefined 而是会报未定义的错。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号