如何确保函数x始终返回单个字符串值?JavaScript有捷径吗?
实现方案与捷径
要实现满足需求的函数x,确保无论传入单个字符串、字符串数组还是不传参数,都返回单个字符串,JavaScript里有非常简洁的实现方式:
捷径写法
function x(p) { return [].concat(p)[0] ?? ''; }
逻辑说明
[].concat(p)会自动统一输入格式:- 若传入单个字符串(如
"Hello"),会转为["Hello"]数组 - 若传入字符串数组(如
["Hello", "World"]),保持原数组不变 - 若未传参数(即
p为undefined),会转为[undefined]
- 若传入单个字符串(如
- 取数组的第0位元素,就能拿到目标的单个值
?? ''用于兜底:当第0位是undefined(比如空数组、未传参数)时,返回空字符串,确保始终输出单个字符串
验证示例
console.log(x("Hello")); // 输出"Hello" console.log(x(["Hello", "World"])); // 输出"Hello" console.log(x()); // 输出"" console.log(x([])); // 输出""
如果不需要兜底空字符串,只想返回原始的undefined(但需求是确保输出单个字符串,所以兜底更稳妥),可以简化为:
function x(p) { return [].concat(p)[0]; }
内容的提问来源于stack exchange,提问作者user1351376
相关产品推荐
相关产品推荐

