javascript - 函数执行环境
怪我咯
怪我咯 2017-04-10 18:01:02
[JavaScript讨论组]

在匿名函数执行环境不是具有全局性吗?那这里调用全局的变量是不是匿名函数就不会在作用域链一级一级的找 新人不太懂 麻烦说细一点 谢谢

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(7)
PHP中文网

这个叫做作用域链 scope chain

每当 JavaScript 执行一个函数时,都会创建一个作用域对象(scope object),用来保存在这个函数中创建的局部变量。它和被传入函数的变量一起被初始化。这与那些保存的所有全局变量和函数的全局对象(global object)类似,但仍有一些很重要的区别,第一,每次函数被执行的时候,就会创建一个新的,特定的作用域对象;第二,与全局对象(在浏览器里面是当做 window 对象来访问的)不同的是,你不能从 JavaScript 代码中直接访问作用域对象,也没有可以遍历当前的作用域对象里面属性的方法。

作用域对象组成了一个名为作用域链(scope chain)的链。它类似于原形(prototype)链一样,被 JavaScript 的对象系统使用。

一个闭包就是一个函数和被创建的函数中的作用域对象的组合。

伊谢尔伦

你怎么知道kei就是全局的?

怪我咯

你不 作用域上的自由变量和 this 的绑定弄混了

黄舟

这里的输出不是AA AA KK吗

黄舟
    var kei = "AA";
    function fn() {
        var kei = "haha";  //此处更改了一下
        console.log(kei);
        var user = "KK";
        return function(){
            console.log(kei);
            console.log(user);
        }
    }
    fn()();  // 输出haha  haha KK

建议题主可以先看看闭包的知识点
阮一峰的网络日志---学习闭包

大家讲道理

还是要一层层往上查

高洛峰

也可以参考 《Javascript忍者秘籍》里面闭包那一章,感觉比较通俗易懂。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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