Javascript 为什么documentready中的默认函数声明会';行不通

Javascript 为什么documentready中的默认函数声明会';行不通,javascript,jquery,Javascript,Jquery,我想调用一个通过onclick事件在document.ready()中声明的函数。 test.js: $(document).ready(function(){ function change(){ $('#content').html("changed"); } }); 但它是有效的: $(document).ready(function(){ change = function(){ $('#content').html("changed"

我想调用一个通过onclick事件在document.ready()中声明的函数。 test.js:

$(document).ready(function(){
   function change(){
       $('#content').html("changed");
   }
});
但它是有效的:

$(document).ready(function(){
    change = function(){
        $('#content').html("changed");
    }
});
test.html

<div id="click" onclick="change()">click</div>
<div id="content">content</div>
<script src="test.js"></script>
点击
内容

我想知道为什么第一个声明不起作用,而第二个却起作用?

函数声明创建局部范围的变量

对以前未声明的变量的赋值会创建全局变量(严格模式除外,在这种情况下它们是错误的)


如果您想从单击事件调用函数,那么使用JavaScript绑定它(因为您使用的是jQuery,所以使用
on
方法)。避免在HTML中使用固有的事件属性。

因为
change
在第二个代码中是一个全局变量。只是想一想为什么不使用事件处理程序?在这种情况下,文档就绪的用法完全没有意义。首先,你不是针对它里面的dom,而是声明一个必须在全局范围内的函数,其次,你的脚本是在受影响的元素之后,所以即使你切换到正确的事件绑定,也不需要它。我只是想知道为什么会发生这种情况。谢谢大家