2016-11-02 82 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。

對不起,當我輸入問題時,我意識到了答案,但無論如何發佈,因爲這可能對某人很方便。