“外部”JavaScript函数可以调用“jQuery函数”吗?

“外部”JavaScript函数可以调用“jQuery函数”吗?

问题描述:

我有这样的代码:“外部”JavaScript函数可以调用“jQuery函数”吗?

(function ($) { 

    $(document).ready(function() { 
     test("hola","caracola"); 
    }); 

    function test(somevar1, somevar2) 
    { 
     alert(somevar1+ "" + somevar2); 
    } 

}(jQuery)); 

function atest2(somevar1, somevar2) 
{ 
    test(somevar1+ "" + somevar2); 
} 

当执行test2的作用,结果是:

ReferenceError: test is not defined 

我的问题是:

我怎么能叫test2的正确执行,jQuery的内部测试功能?

由于

+3

您将不得不在匿名函数外定义'test'。 – 2012-02-17 20:55:02

+1

您可以在jQuery加载函数之外定义'test()',并从内部使用它。 – Brad 2012-02-17 20:55:58

如果您想在匿名函数之外使用它,您必须将test导出到全局范围。可在部份的方式进行:

(function ($) { 
    // ... 
    function test(somevar1, somevar2) { 
     alert(somevar1+ "" + somevar2); 
    } 
    window.test = test; // <-- This 
}(jQuery)); 

这种方法比移动的匿名函数外部函数声明的一大优势是,test仍然可以使用局部变量,这是从匿名函数内只访问。

test仅在其周围缠绕的匿名函数定义。

大多数情况下,函数定义应始终在任何匿名函数之外。当然也有例外,但那些只适用于那些确切知道他们在关闭中做什么的人。

看看这是超出了onready函数,然后你可以使用它。

function test(somevar1, somevar2) 
{ 
    alert(somevar1+ "" + somevar2); 
} 

(function ($) { 

    $(document).ready(function() { 
     test("hola","caracola"); 
    }); 

}(jQuery)); 

您可以使用应用调用的函数,也就是从被叫通话测试

(function ($) { 

    $(document).ready(function() { 
     test.apply(this,["hola","caracola"]); 
    }); 

    function test(somevar1, somevar2) 
    { 
     alert(somevar1+ "" + somevar2); 
    } 

}(jQuery)); 

DEMO

正如其他成员说的清楚,如果它是test函数可以调用在匿名函数之外。这是必要的堂妹通过定义匿名函数内部test功能限制test功能。而且的范围,jQuery是JavaScript的一个真棒framwork,但毕竟其javascript所以NE有效javascript snipplet WUD与jQuery,反之亦然

工作