调用对象内函数时输出shubham与undefined,原因是什么?
问题解答:为何控制台输出shubham后还会出现undefined?
核心原因拆解
shubham的来源:
调用person.test()时,函数内部的console.log(this.name)会输出shubham——这是因为对象方法调用场景下,this指向调用该方法的person对象,能正确读取其name属性值。undefined的来源:
外层的console.log(person.test())会输出undefined,是因为test函数没有显式声明return语句。在JavaScript中,所有未指定返回值的函数,默认都会返回undefined。当你执行person.test()时,先完成了函数内部的输出操作,然后函数返回undefined,外层的console.log就把这个返回值打印了出来。
解决方法
如果不想出现多余的undefined,可以二选一调整代码:
- 直接调用方法,去掉外层
console.log包裹:person.test(); - 给
test函数添加返回值,让外层console.log打印有效内容:
此时控制台会输出两次let person = { name: "shubham", age: 25, test: function() { console.log(this.name); return this.name; } } console.log(person.test());shubham。
内容的提问来源于stack exchange,提问作者Shubham Gupta
相关产品推荐
相关产品推荐

