gpt4 book ai didi

javascript - 为什么 console.log() 会一直循环下去?

转载 作者:行者123 更新时间:2023-11-30 07:25:15 24 4
gpt4 key购买 nike

我定义了一个变量'i'等于2,然后说:如果'i'在0和2之间,让函数'animate'运行。但是,如果我在 JSFiddle (option-command-I) 中打开控制台,console.log() 将继续减少 1,低于 0!我是否在 if 语句中不正确地使用了条件语句?

var interval = window.setInterval(animate, 500);
var i = 2;
if (0 < i < 2) {
function animate() {
alert('run');
i--;
console.log(i);
}
}

JSFiddle:http://jsfiddle.net/lpsternotes/RuLHn/

最佳答案

这里有两个问题。

首先,有这个:0<i<2 .这将始终评估为 true .

为什么?你希望它的意思是“我在 0 和 2 之间”(可以写成 0<i && i<2 )。但是对于 JS 编译器来说,它只是 < 的两个实例。运算符(operator)。一、0<i被评估,导致 truefalse ;然后,将该结果与 <2 进行比较- 所以我们要么 true<2false<2 .为了回答这个问题,JS 必须“转换”true。或 false到一个整数。它对待false作为0 , 和 true作为1 ;因为它们都是 <2 ,最终结果总是true .

其次,还有你的if的位置语句,只检查一次:

if (0 < i < 2) {
function animate() {

如果通读代码,您会发现无法返回到此 if 上面的行声明,因为代码的唯一重复部分是重复运行 animate 的间隔功能。要在每次函数运行时运行,if需要在 function 内,而不是相反。

关于javascript - 为什么 console.log() 会一直循环下去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19074207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com