我正在使用jQuery并在从头部调用的外部Javascript文件中,我有这个:
$(document).ready( function() {
var localDb = null;
function updateLocalStorage() {
// localDb is set here
}
} );
在页面底部,我使用document.ready开始一个新的部分,但是localDb
变量和updateLocalStorage
函数都不可访问。
$(document).ready( function() {
updateLocalStorage();
} );
我收到错误提示“未捕获的ReferenceError:未定义updateLocalStorage。”为什么会发生这种情况,以及如何访问以前定义的函数?
答案 0 :(得分:3)
您将updateLocalStorage定义为只能从该ready处理程序访问的本地内部函数。还有局部变量localDb的情况。
如果您在$(document).ready()
调用之外定义函数和变量,它将正常工作;
答案 1 :(得分:0)
为什么不这样做:
$(document).ready(updateLocalStorage());
function updateLocalStorage() { // localDb is set here }
答案 2 :(得分:0)
这是因为你在一个匿名函数中包装一个函数,因此它只在该范围内可用,你应该做的是将函数导出到全局范围,如下所示:
$(document).ready( function() {
var localDb = null;
function updateLocalStorage(){
// localDb is set here
}
window.updateLocalStorage = updateLocalStorage;
});
您不需要将文档中的函数包装好,控制全局范围的更好方法是自调用匿名函数来执行所需的代码。
(function(){
var updateLocalStorage = function()
{
}
$(document).ready(updateLocalStorage);
})();
答案 3 :(得分:0)
你最好使用
var updateLocalStorage;
$(document).ready( function() {
var localDb = null;
updateLocalStorage = function () {
// localDb is set here
}
} );
然后在你的函数中使用它。