【问题标题】:Why the console output undefined? [duplicate]为什么控制台输出未定义? [复制]
【发布时间】:2014-11-20 03:02:17
【问题描述】:

我有如下代码:

function Person() {
    this.name = '123';
    this.age = 123;
}
Person.prototype.load = function() {
    console.log(this.name + " test "); 
}
var p1 = new Person();
console.log(p1.load());

控制台输出两条消息。一个是123 test,一个是undefined,不知道undefined是哪里来的?

【问题讨论】:

  • 当你调用 load() 时它不会返回任何值

标签: javascript console.log


【解决方案1】:

http://jsfiddle.net/5azsp5r9/

来吧,先生:

function Person() {
    this.name = '123';
    this.age = 123;
}
Person.prototype.load = function() {
    //Load started for John Doe 
    console.log("Load started for "+ this.name );   
    return "Load ended";
}
var p1 = new Person();
p1.name = "John Doe";
//Load ended 
console.log(p1.load());;

【讨论】:

    【解决方案2】:

    您好,您不需要对未定义的内容过于紧张。您的代码是正确的,它可以在任何 js 文件中正常工作。

    当你创建 person 类的实例时,那个 undefined 就出现了。

    【讨论】:

      【解决方案3】:

      console.log 的返回值始终未定义。它打印到控制台,但它本身实际上并没有返回任何内容。

      var tmp = 5;
      console.log(tmp); // prints 5, returns undefined.
      tmp; // Returns 5         
      

      另外你为什么要打印一个已经打印出你想要的信息的函数的结果?

      【讨论】:

        【解决方案4】:

        load 函数不返回任何内容,即返回 undefined。你在这里记录这个undefined

        console.log(p1.load());
        

        你可能只是想要

        p1.load();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多