在jquery ready块中定义的函数和一个外部函数之间的区别是什么

我将一个函数注册到一个带有onclick属性的按钮,并在$()块中定义了这个函数(我知道这是一个不好的做法,它只是一个例子),当我点击按钮时,出现错误:Uncaught ReferenceError:你好没有定义。 这是我的代码:

  $(function(){ function hello(){ alert('hello'); } });      

如果我把函数代码放在$()块之外,它就可以了。 我知道在解析DOM时执行$(),当我单击按钮时,DOM必须已经被解析,那么为什么它会报告错误? 谢谢。

没有区别,除了在$.ready块内执行 (未定义)的函数保证在DOM准备好被访问/操作之后执行。

你的问题是范围界定; 您已经创建了一个本地函数,该函数在处理事件的全局范围内是不可访问的。

你的代码假定hello是一个全局函数,它不是。

 $(function(){ function hello(){ alert('hello'); } $("#btn").click(hello); });