2014-09-25 71 views
2

我有下面这样的代码:为什么控制台输出未定义?

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从哪里来?

+0

负载()不返回任何值 – Kenny 2014-09-25 11:03:33

回答

1

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

console.log(p1.load()); 

你可能只是想

p1.load(); 
0

的console.log的返回值始终是不确定的。它打印到控制台,但它本身并不实际返回任何东西。

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

而且你为什么要打印出已打印出你想要的信息的函数的结果?

0

嗨,你不需要太过紧张关于那个undefined。你的代码是正确的,它可以在任何js文件中正常工作。

这个undefined来自你创建person类的实例。

0

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());;