[英]Function does not work in Javascript
我在jQuery中具有以下功能:
$(document).ready(function(){ function MyFunction() {alert('Hello!');} });
(仅作为示例)
但是,我想这样用常规的Javscript调用此函数:
if(x == y){MyFunction();}
(仅作为示例)
而且我不工作。
但是,当我尝试时:
function MyFunction(){alert('Hello!');} if(x == y){MyFunction();}
(不带jQuery功能)
是工作。
为什么?
如果将函数放在.ready()之外并在ready函数中调用它将起作用,如果将其放在ready()中并在ready之外调用它将给您一个错误,您可能已声明了一个函数使用jQuery代码在就绪状态之外并在内部调用它。
function MyFunction(){
alert("hello!!");
}
//on ready
$(document).ready(function(){
if(x==y)
MyFunction();
});
我了解您的问题是这样的{但并不清楚您要寻找的恕我直言}
定义功能:
function MyFunction(){alert('Hello!');}
准备好在文档上调用它:
$(MyFunction);
现在,您随时可以使用:
if(x == y){MyFunction();}
这行:
if(x == y){MyFunction();}
也应该在document.ready
语句中。
如果在外部调用它,它将在实际定义函数之前运行,因此它将失败。
Lesonchi说对了。 问题是“范围”。
$(document).ready(...)
调用采用的函数是它自己的作用域(Javascript仅具有函数作用域)。 因此,传递给该调用的函数内部定义的任何内容仅在该函数内部可用。
根据您的问题,我假设您希望能够在代码中的其他地方而不是仅在$(document).ready()
调用该MyFunction
方法-因此,在该调用之外进行定义将使其具有“全局”范围,因此可以在您代码的其他地方使用:
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/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.