关于调用返回Boolean的JavaScript函数的条件判断正确性问询
关于JavaScript布尔函数调用的判断总结
之前我一直在纠结JavaScript里调用布尔函数时的判断写法——最早我以为if (booleanFunction)这种写法是正确的,但后来得到的详细回复给出了不同结论,结合所有信息,我整理出了这些关键结论:
- 首先要搞清楚:
if (booleanFunction)里判断的不是函数的返回值,而是函数本身这个对象的真值性(truthy)。在JavaScript中,只要函数是存在的(不是null或undefined),它作为对象就会被判定为truthy,所以这个if语句会始终执行内部的代码块,完全不管函数实际返回的是true还是false。 - 如果想要根据函数的返回值来判断,必须加上括号调用它:
if (booleanFunction()),这样才会执行函数并拿到它返回的布尔值作为判断依据。 - 给大家举个直观的对比例子:
// 定义一个返回false的布尔函数 function booleanFunction() { return false; } // 写法1:判断函数本身,会进入if块 if (booleanFunction) { console.log("这会打印出来,因为函数对象是truthy"); } // 写法2:判断函数返回值,不会进入if块 if (booleanFunction()) { console.log("这不会打印,因为返回值是false"); }
内容的提问来源于stack exchange,提问作者user420479
相关产品推荐
相关产品推荐

