JavaScript函数无显式return时在if判断中返回什么值?
执行结果
不会抛出任何错误,当condition始终不成立时,if (this.checkerFunction())的条件会被判定为不成立,不会进入代码块执行somethingHappens。
核心原因
- JavaScript 对函数返回值有明确的默认规则:只要函数执行过程中没碰到带返回值的
return语句,执行完就会默认返回undefined。你给出的checkerFunction在条件不成立时,跑完if判断就直接结束执行,根本没走到return逻辑,此时拿到的返回值就是undefined。 - if语句做条件判断时,会自动对括号内的值做隐式布尔类型转换。
undefined属于JS固定的假值(falsy value)范畴,转成布尔值的结果为false,自然不会满足if的进入条件。
对应参考代码
checkerFunction() { let checker = false; // 仅if条件成立时才执行return if (condition) { checker = true; return checker; } } anotherFunction() { // checkerFunction无显式return时拿到undefined,隐式转换为false if (this.checkerFunction()) { somethingHappens; } }
- 顺带提个编码注意点:这种仅单分支写return的写法虽然不会报错,但可维护性很差,后续迭代很容易引出逻辑bug。建议给函数补全所有分支的显式返回,比如在
checkerFunction末尾加return checker,保证不管条件是否成立都有明确的布尔返回值。
内容的提问来源于stack exchange,提问作者Javier Ortega
相关产品推荐
相关产品推荐

