繁体   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