Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryready块内部定义的函数与外部定义的函数有什么区别_Jquery_Function - Fatal编程技术网

jqueryready块内部定义的函数与外部定义的函数有什么区别

jqueryready块内部定义的函数与外部定义的函数有什么区别,jquery,function,Jquery,Function,我向一个具有onclick属性的按钮注册了一个函数,并在$()块中定义了这个函数(我知道这是一个不好的做法,这只是一个示例),当我单击按钮时,出现一个错误:未捕获引用错误:未定义hello。这是我的密码: <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script type="text/javascript"> $(function(){ function hello()

我向一个具有onclick属性的按钮注册了一个函数,并在$()块中定义了这个函数(我知道这是一个不好的做法,这只是一个示例),当我单击按钮时,出现一个错误:未捕获引用错误:未定义hello。这是我的密码:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(function(){
    function hello(){
        alert('hello');
    }
});
</script>
</head>
<body>
<input type="button" id="btn" value="click" onclick="hello()"/>
</body>

$(函数(){
函数hello(){
警惕(“你好”);
}
});
如果我把hello函数代码从$()块中放出来,它就会工作。我知道解析DOM时会执行$(),当我单击按钮时,DOM肯定已经被解析了,那么为什么它会报告错误呢?
谢谢。

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


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

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


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

您的代码假定hello是一个全局函数,而事实并非如此

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

您的代码假定hello是一个全局函数,而事实并非如此

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

名为
hello
的函数的作用域是传递给
$()
的匿名函数,因此无法从onclick处理程序调用该函数。名为
hello
的函数的作用域是传递给
$()
的匿名函数,因此无法从onclick处理程序.window.hello=function()调用该函数{将使其成为全局的。反正内联js很烂。hello=function(){将使其成为全局的。反正内联js很烂