1

我已经定义了以下功能

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”返回''?

4

2 回答 2

3

您可以使用默认参数。如果在函数调用中没有传递任何值,您可以设置每个参数将具有的值。

let fun = (a=3) => console.log(a);

fun(4); //4
fun(); //3
于 2016-09-09T11:20:01.843 回答
0

另一种选择是(如果它必须是单线):

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

于 2016-09-09T11:32:09.957 回答