为什么不能在 jQuery$(document).ready(function(){ }
体内声明一个纯 JavaScript 函数?
是因为.ready()
已经是一个函数了吗?在纯JavaScript中,你可以有内部函数,对吧?
您确实可以在ready
回调函数的主体中定义一个函数。所以我假设你只是在访问你在那里定义的函数时遇到问题。例如:
$(document).ready(function()
{
function test1()
{
console.log("test1 function was called");
}
function test2()
{
console.log("test2 function was called");
}
test1(); // works
});
test2(); // does not work - Can't access the scope where test2 was defined.
当function
是对象的属性时,它可以称为method
。ready
是一种将函数作为参数的方法,这个函数称为callback function
,因为ready
会在 html 文档完全加载后"回调"。
test1
和test2
(上图(是函数声明,它们只能在传递给 ready 方法的回调函数中访问:因为我在该范围之外调用test2()
,因此它会失败。
在javascript中,"内部函数"(你称之为闭包(被称为闭包。单击该按钮可了解有关词法范围的更多信息。
ready(( 方法用于在加载文档后使函数可用。无论你在 $(document (.ready(( 方法中编写的任何代码,一旦页面 DOM 准备好执行 JavaScript 代码,就会运行。