将函数作为if条件参数的执行逻辑及结果疑问
问题解答
greet函数确实被调用了:你看到控制台输出
Hello,就是greet函数执行的直接结果,说明它已经被成功调用。console.log('Hi')未执行的原因:
JavaScript里,函数如果没有用return语句指定返回值,默认会返回undefined。而if语句的判断条件会把值转换成布尔值,undefined属于假值(falsy values),所以if(greet())的条件结果是false,自然不会执行大括号里的代码。
如果想让Hi也输出,你可以给greet函数加一个返回真值的语句,比如:
function greet() { console.log('Hello') return true; // 显式返回真值 } if(greet()){ console.log('Hi') }
这样执行时就会先输出Hello,再输出Hi。
内容的提问来源于stack exchange,提问作者Isa Seferović
相关产品推荐
相关产品推荐

