[英]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.