“外部”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的内部测试功能?
由于
答
如果您想在匿名函数之外使用它,您必须将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));
答
正如其他成员说的清楚,如果它是test
函数可以调用在匿名函数之外。这是必要的堂妹通过定义匿名函数内部test
功能限制test
功能。而且的范围,jQuery是JavaScript的一个真棒framwork,但毕竟其javascript
所以NE有效javascript
snipplet WUD与jQuery,反之亦然
您将不得不在匿名函数外定义'test'。 – 2012-02-17 20:55:02
您可以在jQuery加载函数之外定义'test()',并从内部使用它。 – Brad 2012-02-17 20:55:58