如何防止分配未定义的值代替默认值

时间:2018-05-03 04:53:30

标签: javascript ecmascript-6

我想在我的函数中打印字符串的第一个和最后一个名字但如果任何参数未定义则打印未定义但我想使用默认值。我想通过使用es6 / es7功能实现这一目标,这是我的努力:

function ageVerify() {
            var age1 = Number(document.getElementById("age1").value);

            var voteable;
            if (isNaN(age1) || document.getElementById("age1").value=="") {
                voteable = "Please type a number";
            } else {
                voteable = (age1 < 18) ? "Too young" : "Old enough";
            }
            document.getElementById("demo1").innerHTML = voteable;
            return false;
        }

现在

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

如果用户忘记发送任何param而不是打印'K M'

我想以正确的方式使用ES6功能,如rest / spread运算符和Object.assign,但无法实现所需的输出

2 个答案:

答案 0 :(得分:1)

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

最后一件事是您使用let。如果您打算更改变量的值,则应该只使用它。这告诉开发人员变量会随着时间而变化。与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)。

请尝试以下代码段:

&#13;
&#13;
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'
&#13;
&#13;
&#13;

如果出于某种原因,您必须将参数作为对象传递,您可以这样做:

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

&#13;
&#13;
//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));
&#13;
&#13;
&#13;