javascript函数vs jquery函数

时间:2015-01-20 09:38:36

标签: javascript jquery

我在调用函数时遇到问题。我的例子:

jQuery(function($){
    var testFunc = function(){
        console.info('call jQuery testFunc');
    }
});

function callJqueryTestFunc(){
    testFunc(); // error - function not exists
}

拜托,有人帮帮我吗?非常感谢你

4 个答案:

答案 0 :(得分:1)

是的,testFunc()在该上下文中不存在,即在callJqueryTestFunc()

因此,您可以将变量传递给函数并像这样调用该函数:

var testFunc = function(){
console.info('call jQuery testFunc');
}

});

function callJqueryTestFunc(testFunc){
testFunc(); // now, it exist through closure
}

答案 1 :(得分:1)

jQuery没有任何内容。这是javascript范围。例如

(function(){

    var testFunc = function(){
        console.info('call jQuery testFunc');
    }

}());

function callJqueryTestFunc(){
    testFunc(); // error - function not exists
}

你会得到同样的错误。您无法访问其他功能

内的功能

答案 2 :(得分:0)

testFunc在另一个函数(闭包)中,因此无法在该函数之外访问。

如果您希望它可以访问,可以将其附加到window

jQuery(function($){

    window.testFunc = function(){
        console.info('call jQuery testFunc');
    }

});

function callJqueryTestFunc(){
    testFunc(); // error - function not exists
}

答案 3 :(得分:0)

您需要了解该函数仅在作用域中创建,并在子作用域中显示。当您在annonymus jQuery函数中创建一个名为testFunc的函数时,它只在其中可见。

你有2个choces:

  • 像这样使用窗口对象:

    window.testFunc = function(){...}

  • 将其移出jQuery annonymus函数

但请记住,不应该使用许多函数/对象来污染全局范围。把它弄干净会更好。