【问题标题】:How to prevent to assign undefined value in place of default value如何防止分配未定义的值代替默认值
【发布时间】:2018-05-03 04:53:29
【问题描述】:

我想在我的函数中打印字符串的第一个和最后一个名称,但如果任何参数未定义,则它会打印未定义,但我想使用默认值。我想通过使用 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 功能,如 rest/spread 运算符和 Object.assign,但未能实现所需的输出

【问题讨论】:

  • 嘿伙计,我已经提供了一些解决方案来让您的代码正常工作。请在下面找到我的答案。

标签: javascript ecmascript-6


【解决方案1】:

您的代码中有多个拼写错误和语法错误。您的拼写错误是fullName 实例化中的separator,而您的最后一个函数调用是getName(我以为您的意思是printName)。你的语法错误如下: 使用前需要先实例化fullName;此外,最佳做法是一次设置一个默认参数,而不是在对象中,然后将参数设置在数组而不是对象中,并使用扩展 ... 运算符将它们传递给您的函数。

最后一件事是你使用let。如果您打算更改变量的值,则应该只使用它。这告诉开发人员该变量将随时间而变化。与const 不同,const 用于告诉开发人员变量的值是变量生命周期内的常量(因此命名为 const)。

试试下面的代码sn-p:

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'

【讨论】:

  • 谢谢。有时我会发送不同的分隔符,这就是为什么我希望它在同一个对象中
  • 很高兴我能帮上忙。快乐编码:)
【解决方案2】:

//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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多