以下函数的作用域是什么,因为使用窗口作用域调用它不起作用。
$(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?
});
还让我知道如何找到函数,对象或变量的范围?
答案 0 :(得分:0)
JavaScript具有功能级别范围。所以让我们来看看代码。您在代码中定义了两个函数。第一个是无名称函数,作为回调传递给$(document).ready
。我们称之为回调函数。 a
在此回调函数内定义,因此位于本地范围内。所以a
只能从回调函数内部引用。
定义后调用a
并查看警报。然后,您尝试从全局对象获取对a
的引用(在浏览器中全局定义的所有内容都会进入window
)。由于a
未在全球范围内定义,因此您无法从window
检索null
。实际上,当您尝试使用TypeError: window.a is not a function
调用()
时,您会检索{{1}}并在控制台上看到{{1}}。