Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can";“外部”;javascript函数调用;jQuery函数;?_Javascript_Jquery - Fatal编程技术网

Can";“外部”;javascript函数调用;jQuery函数;?

Can";“外部”;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) {

我有以下代码:

(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
仅在围绕闭包的匿名函数中定义


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

看,这在onready函数之外,然后你就可以使用它了

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

(function ($) {  

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

}(jQuery));

看,这在onready函数之外,然后您可以使用它

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

(function ($) {  

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

}(jQuery));

您可以使用apply调用函数,即从被调用方调用test

(function ($) {  

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

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

}(jQuery));

您可以使用apply调用函数,即从被调用方调用test

(function ($) {  

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

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

}(jQuery));

正如其他成员所说,如果
test
函数在匿名函数之外,则可以调用它。这是必要的,因为通过在匿名函数中定义
test
函数,限制了
test
函数的范围。此外,jquery是一个很棒的javascript框架,但是毕竟它的
javascript
是有效的
javascript
snipplet wud与jquery一起工作,反之亦然

正如其他成员所说的那样,
test
函数可以在匿名函数之外调用。这是必要的,因为通过在匿名函数中定义
test
函数,限制了
test
函数的范围。此外,jquery是一个很棒的javascript框架,但是毕竟它的
javascript
是有效的
javascript
snipplet wud与jquery一起工作,反之亦然

如果你想在匿名函数之外使用它,你必须将
test
导出到全局范围。这可以通过以下方式实现:

(function ($) {  
    // ...
    function test(somevar1, somevar2) {
        alert(somevar1+ "" + somevar2);
    }
    window.test = test; // <-- This
}(jQuery));
(函数($){
// ...
功能测试(somevar1、somevar2){
警报(somevar1+“”+somevar2);
}

window.test=test;//如果要在匿名函数之外使用它,必须将
test
导出到全局作用域。这可以通过以下方式完成:

(function ($) {  
    // ...
    function test(somevar1, somevar2) {
        alert(somevar1+ "" + somevar2);
    }
    window.test = test; // <-- This
}(jQuery));
(函数($){
// ...
功能测试(somevar1、somevar2){
警报(somevar1+“”+somevar2);
}

window.test=test;//您必须在匿名函数外部定义
test
。您可以在jQuery加载函数外部定义
test()
,并且仍然从内部使用它。您必须在匿名函数外部定义
test
。您可以定义
test()
在jQuery加载函数之外,仍然从内部使用它。