Javascript变量作用域在onload函数内



我有类似的情况,很好奇为什么p不知道b是什么,因为p是在与b相同的函数中定义的。

var a = "a";
window.onload = function() {
    var b = "b";
    var p = new Person();
    p.doIknowAorB();
}
function Person() {
    this.name = "nate";
}
Person.prototype = function(){
    var doIknowAorB = function() {
        console.log(a);
        console.log(b);
    };
    return {
        "doIknowAorB": doIknowAorB
    }
}();

你在函数外访问b

局部作用域是面向函数的。

:

window.onload = function() {
    var b = "b";
    var p = new Person();
    p.doIknowAorB()'
}

b是连接到onload的匿名(未命名)函数的局部变量。

但在函数doIknowAorB在p:

Person.prototype = function(){
    function doIknowAorB() {
        console.log(a);
        console.log(b);
    };
    return {
        "doIknowAorB": doIknowAorB
    }
}();

显然没有b。您可以访问a,因为它是一个全局变量

因为b变成了匿名函数的局部变量或私有变量

javascript中的作用域是面向函数的。

因此,它不能在function块之外访问

相关内容

  • 没有找到相关文章

最新更新