小白求助, 这个javascript函数为的输出结果为什么是这样?

function demo(){
    console.log("你好")
}
demo()
console.log(demo())

//输出结果:

//你好
//你好
//undefined

1.如果把console.log(demo())注释掉, 只会输出一次"你好", 这个好理解.

2.如果不注释, 像上面这样, 会输出两次"你好"和一次"undefined",

  1. 这二次的"你好" , 这是哪来的?
  2. 第三次的"undefined" , 是因为没有return返回值.

    1. 另外就return想问, return后面可接什么呢? 目前知道像字符串, 变量名等都是可以的. 但return后面接 console.log(demo()), 是什么意思? 测试了下, console.log("你好")改为 return console.log("你好"), 第三次仍然会输出"undefined", 为什么不是"你好"呢?

晚上突然发现这个简单东西都解释不了, 感觉这几天白学了......

阅读 1.8k
3 个回答
这二次的"你好" , 这是哪来的?

console.log(demo()) 中,demo 函数同样被执行了一次。

另外就return想问, return后面可接什么呢?

可以接任何(语法上)合法的东西,return console.log("你好") 表示返回 console.log("你好")console.log 方法的返回值,而这个函数并不返回任何东西一如你的 demo 函数,因此仍然会看见 undefined

调用了2次demo(),输出2次很难理解??

clipboard.png

按照楼上的解释稍微改动一下demo函数,确实是这样的。“你好”是函数执行时输出的,而“1”,则是函数demo的返回值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题