javascript - 如何防止分配未定义的值代替默认值
问题描述
我想在我的函数中打印字符串的第一个和最后一个名称,但是如果任何参数未定义,则它会打印未定义,但我想使用默认值。我想通过使用 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,但未能实现所需的输出
解决方案
您的代码中有几个拼写错误和语法错误。您的拼写错误是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'
推荐阅读
- r - 如何使用 R 基于矩阵中的最小距离阈值对元素进行聚类?
- php - 如何在修改 mysql 数据库时修复“mysqli_stmt::bind_param():”
- unix - 为什么 argc 存在/为什么 env 没有类似的东西?
- angular - 为什么角度不允许我为对象赋值?
- angular - Angular Error_for_TS2554 预期 0 个参数,但得到 3 个
- discord.js - 从提及 discordjs 中识别管理员
- python - 如何用文件名制作熊猫列?
- python - 为什么 Python 控制台会重复输入其中的内容?
- xml - complexContent 和 sequence 之间的 XSD 区别
- javascript - 如何在Javascript中绑定一个函数