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