Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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
Javascript 在局部嵌套函数中设置全局变量的值_Javascript_Cordova - Fatal编程技术网

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)首先执行内部警报这是唯一的解决方案吗?因为从面向对象的角度来看,为每个需要返回某些内容的嵌套函数使用全局变量听起来并不正确。