Как запретить назначать неопределенное значение вместо значения по умолчанию - PullRequest
0 голосов
/ 03 мая 2018

Я хочу напечатать имя и фамилию строки в моей функции, но если какой-либо из параметров не определен, он печатает неопределенный, но вместо этого я хочу использовать значение по умолчанию. Я хочу достичь этого, используя функции es6 / es7, и вот мои усилия:

const printName =  (name = { first: 'K', last: 'M', separator: ' '}) =>  {
    console.log("name", name);
    let {first, last} = name;
    fullname = `${first}${seprator}${last}`;
    return fullName;
}

Сейчас

let param = {first: 'A', last: undefined};
printName(param); // desired output 'A M'
let param = {first: undefined, last: 'B'};
getName(param) //desired output 'K B'

Если пользователь забыл отправить какой-либо параметр, он должен напечатать 'K M'

Я хочу использовать функции ES6, такие как оператор отдыха / распространения и Object.assign, надлежащим образом, но не могу получить желаемый результат

Ответы [ 2 ]

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

//Tyou are assigning the new values to the variables. Try this.


const printName =  ({first='A',last='M',seprator=' '}) =>  {
    let fullName = `${first}${seprator}${last}`;
    return fullName;
}
let param = {first: 'B',last:'X'};
console.log(printName(param));
0 голосов
/ 03 мая 2018

В вашем коде несколько опечаток и синтаксических ошибок. Ваши опечатки были separator в вашем fullName экземпляре, а ваш последний вызов функции был getName (я предполагал, что вы имели в виду printName). Ваши синтаксические ошибки следующие: вам нужно создать экземпляр fullName перед его использованием; Кроме того, рекомендуется устанавливать параметры по умолчанию по одному, а не в объекте, а затем устанавливать параметры в массиве, а не в объекте, и использовать оператор распространения ... для передачи их в вашу функцию.

Последнее, что вы используете let. Вы должны использовать это, только если вы намереваетесь изменить значение переменной. Это говорит разработчику, что переменная со временем изменится. В отличие от const, который используется, чтобы сообщить разработчику, что значение переменной является константой времени жизни переменной (отсюда и имя const).

Попробуйте следующий фрагмент кода:

const printName =  (first = 'K', last = 'M', separator = ' ') =>  {
    const fullName = `${first}${separator}${last}`;
    return fullName;
}

let param = ['A', undefined];
console.log(printName(...param)); // desired output 'A M'
param = [undefined, 'B'];
console.log(printName(...param)); //desired output 'K B'

Если по какой-то причине вы должны передать свои параметры как объект, вы можете сделать это следующим образом:

const printName =  ({first = 'K', last = 'M'}, separator = ' ') =>  {
    const fullName = `${first}${separator}${last}`;
    return fullName;
}

let param = {first: 'A', last: undefined};
console.log(printName(param)); // desired output 'A M'
param = {first: undefined, last: 'B'};
console.log(printName(param)); //desired output 'K B'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...