Почему консоль выводит undefined?

У меня есть следующий код:

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?


person Todd Mark    schedule 25.09.2014    source источник
comment
когда вы вызываете load(), он не возвращает никакого значения   -  person Kenny    schedule 25.09.2014


Ответы (4)


Функции load ничего не возвращают, то есть возвращают undefined. И вы регистрируете это undefined здесь:

console.log(p1.load());

Вы, наверное, просто хотите

p1.load();
person Denys Séguret    schedule 25.09.2014

Возвращаемое значение console.log ВСЕГДА не определено. Он выводит на консоль, но сам ничего не возвращает.

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

Кроме того, почему вы печатаете результат функции, которая уже выводит нужную вам информацию?

person Neil Munro    schedule 25.09.2014

привет, тебе не нужно слишком сильно напрягаться по поводу этого неопределенного. Ваш код правильный, и он будет нормально работать в любом файле js.

Это неопределенное происходит, когда вы создаете экземпляр класса person.

person Sandip Vora    schedule 25.09.2014

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());;
person SilentTremor    schedule 25.09.2014