js中关于undefined的一个问题

http://img.mukewang.com/583b9...
clipboard.png

各位大神,上面截图中的undefined是怎么回事?不是已经输出了需要的答案:"Ayne"吗?那么这个undefined是那个返回值?

其次,如果最后一句改为:console.log(yaoxi(text)),为什么会报错?

阅读 3.5k
5 个回答

关于 undefined

clipboard.png

如上示例,console.log("hello") 输出 hello
console.log("hello") 当作一个表达式来看,它没有返回值(即返回值是 undefined),所以输出 undefined

再来一个有返回值的函数试验,可以看到,输出的不再是 undefined,而是 return 出来的内容。

注意那个向左带点的小箭头,它表示上一个输入的表达式的计算结果

为什么 console.log(yaoxi(text)) 会报错

你在调用的那个上下文环境中就没有定义 text 这个变量,所以会报错。

text 是定义在 yaoxi 所引用的那个匿名函数中的,在这个函数之外并没有定义 text,所以在这个函数之外使用 text 就会报未定义,或者 ReferenceError 这类错。

没报错,最后一console 里会显示最后一句的返回值,console. Log只打印,没返回值,所以是undedined

1.你试试将console.log(yaoxi(s))改为yaoxi(s)而不用console.log。
控制台会自动输出返回值的。所以那个undefined是console.log()的返回值。
2.console.log(yaoxi(text))这么写的话。text为实参,会去查找text这个变量。因为找不到所以会报错。

undefined 是 console.log 函数的返回值,这里的text在这个函数表达式中声明的,属于函数内部的局部变量,外部当然访问不到了

undefined就是console.log这个函数的返回值,并不是说Ayne错了 你具体可以百度下控制台console.log()的原理,其次,你最后问的这个问题,改为console.log(yaoxi(text))会报错是因为你根本就没有定义text这个变量所以就无法作为传参传入函数啊,不懂你是哪里理解出了问题 。

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