从同一个js文件中调用时,myfunc()成功运行.但是从HTML页面调用时它是未定义的(Firebug):
JS档案:
$(function() {
myfunc() {
alert('inside myfunc');
}
alert('outside myfunc');
myfunc(); //this successfully runs myfunc()
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<script>
$(function() {
myfunc(); //this doesn't run myfunc(). It's undefined
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是当我将myfunc()声明更改为:
myfunc = function () { ... }
Run Code Online (Sandbox Code Playgroud)
它不再是未定义的,并且运行成功.
对不起这个非常棒的问题,但刚刚发生了什么?当我改变声明函数的方式时,为什么它可以工作?
这是一个范围问题.
在
$(function() {
myfunc() {
alert('inside myfunc');
}
alert('outside myfunc');
myfunc(); //this successfully runs myfunc()
});
Run Code Online (Sandbox Code Playgroud)
它只能在匿名函数(function() { })中使用,所以如果你在匿名函数之外但在同一个js文件中调用它,它也将不可用.
如果你宣布使用它
myfunc = function () { ... }
Run Code Online (Sandbox Code Playgroud)
myfunc是一个全局变量,该函数随处可用.