js 简单问题

2016-11-16 17:53:05 +08:00
 yantianqi
为什么会出现 undefined ,不应该是 function func(){}吗?
var obj = {a:function func(){},name:"lisi"};
console.log(obj.a());//为什么是 undefined
console.log(obj.name)//lisi
2031 次点击
所在节点    程序员
5 条回复
dilidili
2016-11-16 17:55:43 +08:00
你执行了函数,函数没有 return 返回值,就是 undefined 啊
luulsj
2016-11-16 17:59:05 +08:00
<pre>
// 会出现你说的函数, obj.a()相当于调用了函数,打印出的是函数返回的结果
console.log(obj.a);
</pre>
DiamondbacK
2016-11-16 18:14:11 +08:00
没有显式 return 的函数都 return undefined
justyy
2016-11-17 00:29:11 +08:00
我知道的 powershell 和 R 都是用 函数退出前的最后一个表达式做为 return 值的。其它都得加 return
Nutlee
2016-11-17 13:55:10 +08:00
首先

```
obj.a === function(){}
obj.a() === ( function(){} )()
```

所以, obj.a() 取得的是匿名函数的返回值,如楼上所说 没有显式 return 的, return 都是 undefined 。如果你打印的是 obj.a 就是匿名函数本身了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/320978

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX