如何使用/控制错误在undefined上传播operator

时间:2016-09-09 11:16:55

标签: javascript ecmascript-6 spread-syntax

我定义了以下功能

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"返回' ',例如?

2 个答案:

答案 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