javascript - 为什么这段代码访问不了上一级的变量?
ringa_lee
ringa_lee 2017-04-11 10:16:51
[JavaScript讨论组]
window.onload =function(){
        var a =1;
        var oBtn = document.getElementById('btn');
        oBtn.onclick = function(){
            foo();
        }

    }
        
        function foo(){
            console.log(a) //Uncaught ReferenceError: a is not defined
        }
ringa_lee
ringa_lee

ringa_lee

全部回复(3)
大家讲道理

js中的作用域是静态作用域,而不是静态作用域。也就是说函数执行时访问的作用域是定义时的作用域,而不是调用时的作用域。

a变量在onload里面,foo函数里没有a变量,所以你在onclick的时候foo函数里没有a变量。

伊谢尔伦

this.a

阿神

变量a的作用域只存在于onload里,所以咯。

var a =1; 改写成 a =1; 去掉var的话,a就是全局变量了,其它函数里也可以调用到。

或者把 var a =1; 写到 onload函数的上面。

var a =1;

window.onload =function(){

    
    var oBtn = document.getElementById('btn');
    oBtn.onclick = function(){
        foo();
    }

}
    

function foo(){
console.log(a) //Uncaught ReferenceError: a is not defined
}

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

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