Функция возвращает NaN, когда не должна - PullRequest
0 голосов
/ 01 мая 2018

почему функции myTodos.meetDone () возвращают Nan? это, конечно, и я просто определяю объект с именем myTodos, и просто хочу напечатать console.log () результат.

let myTodos = {
    day: 'Monday',
    meetings: 0,
    meetDone: 0,


    addMeeting: function (num) {
        this.meetings = this.meetings + num;
    },
    meetDone: function (num) {
        this.meetDone = this.meetDone - num;
    },
    resetDay: function () {
        this.meetings = 0;
        this.meetDone = 0;
    },
    report: function () {
        let meetleft = this.meetings + this.meetDone;
        return `Yo have ${meetleft} meeting for today!`;
    },
}

myTodos.addMeeting(2);
myTodos.addMeeting(5);
myTodos.meetDone(23);

console.log(myTodos);

console.log(myTodos.report());

так или иначе первый console.log предназначен для отладки почему это возвращается Нэн, я не понимаю этого !!!!

1 Ответ

0 голосов
/ 01 мая 2018

Как уже упоминал @AndrewBone в своем комментарии, у вашего объекта есть два свойства с именем meetDone. Последний перезаписывает первый, поэтому, когда вы добавляете this.meetings + this.meetDone, вы добавляете функцию к числу, что приводит к отображению NaN. Измените имя одного из свойств, meetingDone будет даже более информативным, чем meetDone IMO

let myTodos = {
    day: 'Monday',
    meetings: 0,
    meetDone: 0,


    addMeeting: function (num) {
        this.meetings = this.meetings + num;
    },
    meetingDone: function (num) {
        this.meetDone = this.meetDone - num;
    },
    resetDay: function () {
        this.meetings = 0;
        this.meetDone = 0;
    },
    report: function () {
        let meetleft = this.meetings + this.meetDone;
        return `Yo have ${meetleft} meeting for today!`;
    },
}

myTodos.addMeeting(2);
myTodos.addMeeting(5);
myTodos.meetingDone(23);

console.log(myTodos);

console.log(myTodos.report());
...