簡體   English   中英

我知道此代碼無法正常工作,為什么我找到的代碼可以工作? 是什么使錯誤的代碼錯了?

[英]I know this code does not work, why does the code that I found does? What makes the wrong code, wrong?

這是從一些編碼書中的練習中得出的。 目標是使用for循環和jQuery在不同的行上打印您的朋友姓名; 但是每次我打開它時,頁面都會變得無響應。 我想確切知道為什么如此詳細。

這是無效的代碼:

var friendsName = prompt("enter a friends name");

for(friendsName; friendsName !== null;){
    $("body").append("<p>" + friendsName + "<p>");
} 

這是執行以下操作的代碼:

for(var listYourFriends;listYourFriends !== null;listYourFriends = prompt("enter a friends name"))
{

   if(listYourFriends !== undefined){$("body").append("<p>" + listYourFriends + " smells" + "</p>");
    }


    else if( listYourFriends === null){
        break;
    }
}

但是現在我得到了答案,我不知道為什么這段代碼行得通,而其他代碼行不通。 另一個雖然確實給我帶來了一些警報,但在我看來,它似乎是有道理的。 有人可以解釋兩者之間的區別嗎?

您的代碼會將其轉到無限循環,因為for循環的條件friendsName !== null永遠不會for false 例如,當您在提示符下輸入一些名稱時,它將不會再次更改,並且在整個代碼中將保持不變。

您需要在每個循環中用新值更新friendsName

 var friendsName = prompt("enter a friends name"); for(friendsName; friendsName !== null;){ $("body").append("<p>" + friendsName + "<p>"); friendsName = prompt("enter a friends name"); } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

為什么代碼有效?

根據MDN, for語句的語法為

for ([initialization]; [condition]; [final-expression]) 

在這里, final-expression是將在每次迭代期間評估的部分。 在上面的代碼中,我們在每次迭代期間執行以下行。

friendsName = prompt("enter a friends name");

因此,我們可以將其放在[final-expression]的位置,並且其行為將相同。 這就是有問題的代碼起作用的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM