You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用对象内函数时输出shubham与undefined,原因是什么?

问题解答:为何控制台输出shubham后还会出现undefined?

核心原因拆解

  1. shubham的来源:
    调用person.test()时,函数内部的console.log(this.name)会输出shubham——这是因为对象方法调用场景下,this指向调用该方法的person对象,能正确读取其name属性值。

  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:42:02