繁体   English   中英

函数在Javascript中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM