javascript - 关于js函数内部取外部值的问题
高洛峰
高洛峰 2017-04-11 12:59:32
[JavaScript讨论组]
 var o = {
            fn : function(){
                var a=1;
                //第一种情况:如果把bbb写在这儿外部调用这个bbb可以取到变量a的值
                // this.bbb = function(){
                //     console.log(a);
                // }
            },
             //第二种情况:如果把bbb写在这儿外部调用用这个bbb不可以取到变量a的值
            bbb: function(){
                console.log(a);
            }
        }
 function func(){
    o.bbb();//第一种情况可以打印出a的值,第二种不可以。第一种为什么可以呢,bbb是在func函数作用域里面调用啊??
 }
 o.fn();
 func();//

外部调用
为什么呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
伊谢尔伦

函数内部是一个独立作用域

巴扎黑

第一问,可以。外层函数有变量a.
第二问,不可以。对象没有变量a.

当函数内部找不到变量的时候,它会往外层找。也就是上层。

大家讲道理

先看第一种情况:

var o = {
    fn : function () {
        var a = 1;
        bbb:function () {
            console.log(a);// 1 
        }
    }
} 

此处涉及到js函数作用域;变量a是局部变量,只在函数fn内部起作用,所以可以打印出1;
再看第二种情况:
函数内部定义的变量a,在函数fn外是无法获取到的,所以此时是打印出来:
Uncaught ReferenceError: a is not defined

关于函数作用域,闭包,变量提升等希望楼主看一下 js高程

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

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