问题描述
我相信之前已经发布过类似的问题,但我不完全理解为什么使用回调函数作为 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 是指向和对象函数的指针。
必须调用才能跳出无限循环