2016-07-12 15 views
-1

Когда я передаю параметр в setGear() внутри console.log(), результаты возвращаются undefined, почему это? Результат должен быть число я передаю в.Выход JavaScript из функции конструктора возвращается как «undefined»

var Bike = function() { 
    var gear = 2;      // private var set to an arbitrary number 

    this.setGear = function(change) { // public method 
    gear = change; 
    }; 

    this.getGear = function() {  // public method 
    return gear; 
    }; 
}; 

var myBike = new Bike(); 

console.log(myBike.setGear(4)); // returns undefined, should return 4 
console.log(myBike.setGear(3)); // returns undefined, should return 3 
console.log(myBike.setGear(1)); // returns undefined, should return 1 
+2

'setGear' не возвращает ничего, поэтому' undefined' является возвращаемым значением по умолчанию. –

+2

сеттер не должен ничего возвращать, геттер должен ... – epascarello

+0

@epascarello --- точно! Возможно, я должен был сделать это ясно до публикации, и мой вопрос не был бы проголосован. Этот код выполняется из упражнения Free Code Camp, который предположительно иллюстрирует функцию конструктора. Я не вижу смысла возвращаться из '' '' getGear() '' ', но это то, что они предоставили. Я просто хотел увидеть результаты в node.js. –

ответ

0
this.setGear = function(change) { // public method 
    gear = change; 
}; 

не должен возвращаться 4.

this.setGear = function(change) { // public method 
    gear = change; 
    return gear; 
}; 

должен сделать

0

если вы установите myBike.setGear, вы должны вызовите функцию myBike.getGear, чтобы вернуть передачу; myBike.setGear(4); console.log(myBike.getGear);