2016-11-02 76 views
0

为什么此变量(lanFound)变得不确定?JavaScript布尔结果失败

我得到以下输出:

灯泡的时刻! :)

当我输入输出序列给它! ajax是异步的,所以在代码继续之后真正回来!无论如何,我会发布,可能会很方便的人!

  • 测试:DK
  • 结果:未定义
  • /网站/ cspdKnowledgeAssemblyPlatform/ApprovedContent/DKCover Letter.docx成功

我有一组的docx文件,但我加入支持语言,但要测试已添加的文件(docx),我使用以下代码(确定这是一个很长的变体,以便我进行调试):

fileUrl = filePath + fileName; 
     if (lan != "EN"){ 
      showNotification("testing for: " + lan); 
      var lanFound = false; 
       lanFound = checkURL(filePath + lan + fileName); 
       showNotification("result is: " + lanFound); 
      if(lanFound){ 
       debugger; 
       fileUrl = filePath + lan + fileName; 
       showNotification("found " + fileUrl); 
      } 
     } 

     function checkURL(urlFileName){ 
      $.get(urlFileName) 
      .fail(function() { 
       showNotification(urlFileName + " failed"); 
       return false; 
      }) 
      .done (function() { 
       showNotification(urlFileName + " succeeded"); 
       return true; 
      }); 
     } 

可以忽略这一点 - 只是增加了“showNotification”)

 function showNotification(content){ 
      var currentText = $("#resultpanel").html(); 
      currentText = currentText + "<br/>" + content; 
      $("#resultpanel").html(currentText); 
     } 
+0

和问题? – madalinivascu

+0

为什么变量变得不确定! (请参阅输出项目符号) –

+0

您正在为函数执行返回值分配变量: lanFound = checkURL(filePath + lan + fileName); 如果你去checkURL函数,你会看到这个函数没有事件有'return'语句,在'.fail'和'.done'方法的回调函数中只有一个返回值。这些回调将返回一个值,但是checkURL不会返回任何东西。因此,Javascript中没有'return'语句的每个函数都会返回'undefined'。我不知道为什么它被标记为重复。 –

回答

1

不能调用以这种方式Ajax调用的情况下,返回结果之前的代码会擦肩而过,因为它是异步的,结果是变量在代码通过它时被读取为undefined。

对不起,当我输入问题时,我意识到了答案,但无论如何发布,因为这可能对某人很方便。