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

1

Я хочу получить результат таким образом,

Lucifer is 20 years old
Default is 20 years old

проблема в том, что если я отправлю пустую строку в качестве первого аргумента и 20 как вторую, я получаю следующий вывод:

Lucifer is 20 years old
is 20 years old 

И снова, если я отправлю только один параметр, скажем, 20 в качестве первого параметра и второго параметра, я получаю следующий вывод:

Lucifer is 20 years old
20 is 20 years old

Вот мой код, а конструктор - это функция, которую я отправляю параметрам:

class Person {
    constructor(name = 'Default',age=0){
        this.name = name;
        this.age = age;
    }
    getDescription() {
        return '${this.name} is ${this.age} years old'
    }
}

const me = new Person('Lucifer',20);
console.log(me.getDescription());

const meNew = new Person('',20);
console.log(meNew.getDescription());
  • 2
    new Person(undefined, 20) , но это не то, что должно быть сделано.
  • 0
    Вау, спасибо! Это было именно то, что я искал!
Показать ещё 4 комментария
Теги:
es6-class

1 ответ

5
Лучший ответ

У вас не может быть необязательных аргументов перед обязательными аргументами. Вы должны изменить порядок своих аргументов или использовать объект конфигурации:

class Person {
    constructor(options = {}) {
        this.name = options.name || 'Default';
        this.age = options.age || 20;
    }
    getDescription() {
        return '${this.name} is ${this.age} years old'
    }
}

const me = new Person({name: 'Lucifer', age: 20});
console.log(me.getDescription());

const meNew = new Person({age: 20});
console.log(meNew.getDescription());
  • 0
    Спасибо, это работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню