Javascript 在局部嵌套函数中设置全局变量的值
我有以下功能Javascript 在局部嵌套函数中设置全局变量的值,javascript,cordova,Javascript,Cordova,我有以下功能 function fileExists(FileName) { var retvar="false"; window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { fileSystem.root.getFile(FileName, null, function() { fileEntry.file(func
function fileExists(FileName) {
var retvar="false";
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
fileSystem.root.getFile(FileName, null,
function() {
fileEntry.file(function() {
alert("Exists");
},
function() {
});
},
function () {
retvar = "true";
alert(retvar); //says true
});
},null);
alert(retvar); //says false
}
在这里,我必须在内部嵌套函数中将retvar的值设置为true。我无法将该值传递到该函数之外。有谁能告诉我将该值传递给父函数的方法吗?噢!谢谢谷歌!谢谢你回答我 我必须在函数之前初始化变量 答案应该是
var retvar="";
function fileExists(FileName) {
retvar = "false";
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
fileSystem.root.getFile(FileName, null,
function() {
fileEntry.file(function() {
alert("Exists");
},
function() {
});
},
function () {
retvar = "true";
alert(retvar); //says true
});
},null);
alert(retvar); //says same if it is assigned as like in the inner loop
}
您是否出于特定原因将
“true”
和“false”
用作String
s?直接将true
和false
用作boolean
s不是更好吗?我只将其用作字符串。我需要它作为字符串。通过在警报中再添加一个硬编码参数,执行检查的顺序是什么。。。可能是您的外部警报先调用。内部警报先执行。刚才我通过alert(“内部值:”+retvar)区分它们来检查它代码>和警报(“外部值:”+retvar)代码>首先执行内部警报这是唯一的解决方案吗?因为从面向对象的角度来看,为每个需要返回某些内容的嵌套函数使用全局变量听起来并不正确。