这是来自一些编码书中的一些练习。目标是使用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;
}
}
但是现在我得到了答案,我不知道为什么这段代码行得通,而其他代码行不通。另一个虽然确实给我带来了一些警报,但在我看来,它似乎是有道理的。有人可以解释两者之间的区别吗?
答案 0 :(得分:0)
您的代码将进入无限循环,因为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]
的位置,并且其行为将相同。这就是有问题的代码起作用的原因。