如果将它们放在document.ready()函数中,则函数的定义为未定义:
$(document).ready(function(){ function foo() { alert('Bar'); } }); foo(); // Undefined
为什么会这样?我确定我只需要一些简单的理解即可:)
不确定为什么在范围内定义函数ready()对您很重要,但是您可以通过预先声明使其起作用foo:
ready()
foo
<html><head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> <script> var foo; // Here's the difference $(document).ready(function(){ foo = function () { alert('Bar'); } }); </script></head><body> <input type="button" onclick="foo()" value="Click me"> </body></html>
显然foo(),ready()由于ready()代码尚未运行,您之后不能立即从内联脚本中调用,但是您可以稍后再调用该函数。
foo()
只要确保foo()在ready()代码运行之前没有任何东西可以尝试调用(或进行foo()无害函数的初始声明)。