在while循环JavaScript中使用函数作为语句?

问题描述

我相信之前已经发布过类似的问题,但我不完全理解为什么使用回调函数作为 While 循环语句,如下所示,会导致无限循环:

do {
    console.log("repeat");
} while(myFunc);

function myFunc(){
    return false;
}

另一方面,这个版本打印“repeat”一次然后停止:

do {
    console.log("repeat");
} while(myFunc === false);

这是为什么?

解决方法

myFunc是一个变量(JS中所有函数都是对象变量),不等于false

另一方面,

myFunc() 是调用 myFunct 的结果,is 等于 false

所以你应该通过调用来比较函数的结果,而不是函数本身:

do {
    console.log("repeat");
} while(myFunc() === false);
,

完全同意评论,您检查的条件始终为真,因为 myFunc 是指向和对象函数的指针。

必须调用才能跳出无限循环