我在jQuery中有这个功能:
$(document).ready(function(){ function MyFunction() {alert('Hello!');} });
(仅限示例)
但是,我想用这种方式用常规的Javscript调用这个函数:
if(x == y){MyFunction();}
(仅限示例)
我不行。
然而,当我尝试时:
function MyFunction(){alert('Hello!');} if(x == y){MyFunction();}
(没有jQuery功能)
这是工作。
为什么?
答案 0 :(得分:2)
如果你将函数放在.ready()之外并在ready函数中调用它,它会工作,如果你把它放在ready()中并且在ready之外调用它会给你一个错误你可能有使用jQuery代码在就绪状态之外声明的函数并在其中调用它。
function MyFunction(){
alert("hello!!");
}
//on ready
$(document).ready(function(){
if(x==y)
MyFunction();
});
答案 1 :(得分:1)
我理解你这样的问题{但不是很清楚你在寻找什么?}
定义功能:
function MyFunction(){alert('Hello!');}
在准备好文件时调用它:
$(MyFunction);
现在,无论何时,您都可以使用:
if(x == y){MyFunction();}
答案 2 :(得分:0)
这一行:
if(x == y){MyFunction();}
也应该在document.ready
声明中。
如果你在外面调用它,它将在实际定义函数之前运行,因此它将失败。
答案 3 :(得分:0)
Lesonchi是对的。问题是'范围'。
$(document).ready(...)
调用采用的函数是它自己的作用域(Javascript只有函数作用域)。因此,您传递给该调用的函数内部定义的任何内容都只能在该函数内部使用。
根据您的问题,我假设您希望能够在代码中的其他地方调用MyFunction
方法,而不仅仅是$(document).ready()
- 所以,在该调用之外定义它会给它'全球'范围,因此可以在您的代码中的其他地方使用:
function MyFunction(){ /* do something */ }
$(document).ready(function(){
MyFunction(); // call it in this scope
});
// call it in 'global' scope
if (x == y) {
MyFunction();
}
另请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope