我定义了以下功能
const fn = (a) => (console.log(...a));
当我用参数调用它时功能完美:
fn(['asd','fgh']) // prints 'asd fgh'
但是,有没有办法用undefined调用它?
fn() //Uncaught TypeError: undefined is not iterable(…)
我能想到的唯一解决方案是使用
在函数的开头检查它if (a === undefined) a = '';
我有什么方法可以制作" ... a"返回' ',例如?
答案 0 :(得分:3)
您可以使用默认参数。如果在函数调用中没有传递任何值,则可以设置每个参数将具有的值。
let fun = (a=3) => console.log(a);
fun(4); //4
fun(); //3
答案 1 :(得分:0)
另一种是(如果必须是oneliner):
fn = a => a!==undefined && typeof a[Symbol.iterator] === 'function'? console.info(...a) : console.info('');
fn(); // result ''
fn(1); // result ''
fn([1,2,3]); // result 1 2 3
如果迭代器部分不是问题:
fn = a => a!==undefined ? console.info(...a) : console.info('');
fn(); // result ''
try {
fn(1);
}
catch(e){
console.info("told you:" + e);
}; // throws an error
fn([1,2,3]); // result 1 2 3