我在调用函数时遇到问题。我的例子:
jQuery(function($){
var testFunc = function(){
console.info('call jQuery testFunc');
}
});
function callJqueryTestFunc(){
testFunc(); // error - function not exists
}
拜托,有人帮帮我吗?非常感谢你
答案 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函数
但请记住,不应该使用许多函数/对象来污染全局范围。把它弄干净会更好。