这个JavaScript函数的范围是什么

时间:2014-12-14 08:21:51

标签: javascript function scope

以下函数的作用域是什么,因为使用窗口作用域调用它不起作用。

$(document).ready(function(){
    function a() {
        alert("function called from global scope");
    }

    // this alerts
    a(); //This is global scope?

    // this doesn't alert
    window["a"]();  //This is also global scope?
});

还让我知道如何找到函数,对象或变量的范围?

1 个答案:

答案 0 :(得分:0)

JavaScript具有功能级别范围。所以让我们来看看代码。您在代码中定义了两个函数。第一个是无名称函数,作为回调传递给$(document).ready。我们称之为回调函数a在此回调函数内定义,因此位于本地范围内。所以a只能从回调函数内部引用。

定义后调用a并查看警报。然后,您尝试从全局对象获取对a的引用(在浏览器中全局定义的所有内容都会进入window )。由于a未在全球范围内定义,因此您无法从window检索null。实际上,当您尝试使用TypeError: window.a is not a function调用()时,您会检索{{1}}并在控制台上看到{{1}}。