JavaScript中调用greet函数后console.log返回undefined的原因咨询
解答你的JavaScript函数返回值疑惑
嘿,作为JS新手能注意到这个细节真的很棒!让我一步步帮你搞清楚控制台那行undefined的来历:
首先,咱们拆解代码的执行流程:
- 当你调用
greet()时,函数内部的console.log("Hi")会先执行,这就是控制台第一行打印Hi的原因,这部分你的判断完全正确。 - 这里的核心知识点是:JavaScript中如果函数没有显式的
return语句,它默认会返回undefined。你的greet函数只做了打印"Hi"的操作,没有任何返回值,所以greet()这个表达式最终的结果就是undefined。 - 而你外层的
console.log(greet()),本质是把greet()的返回值作为参数传给console.log,所以它会打印出这个返回值——也就是undefined,这就是第二行日志的来源。
你之前误解了函数执行的输出和返回值的区别:console.log("Hi")是函数内部的输出动作,和函数本身的返回值没有关系。如果想让greet()的返回值是"Hi",可以修改函数:
function greet() { return "Hi"; }; console.log(greet()); // 此时控制台只会打印"Hi",不会出现undefined
要是你既想让函数内部打印"Hi",又想让它返回"Hi",就这么写:
function greet() { console.log("Hi"); return "Hi"; }; console.log(greet()); // 控制台会先打印"Hi",再打印"Hi"
内容的提问来源于stack exchange,提问作者Sergey Pleshakov
相关产品推荐
相关产品推荐

