2016-09-09 3 views
1

에 운영자 내가 정의한 다음과 같은 기능사용 방법/제어 오류가 나는 매개 변수를 호출 할 때 정의되지 않은

const fn = (a) => (console.log(...a)); 

기능이 완벽하게 작동 확산 :

fn(['asd','fgh']) // prints 'asd fgh' 

를하지만, 전화를 할 수있는 방법이있다 그것은 정의되지 않은? 내가 생각할 수

fn() //Uncaught TypeError: undefined is not iterable(…) 

유일한 해결책은 내가 할 수있는 방법 "...는"반환 '을 위해, 거기에있는

if (a === undefined) a = ''; 

와 함수의 시작에서 그것을 확인하는 것입니다 예?

+0

CONST의 FN = (A) => (을 console.log (A && ... A)) catch되지 않은 구문 에러 : 예기치 않은 토큰 ... 이 – Mayday

+3

'const를 FN을 작동하지 않습니다 = (A) => (console.log (... a || '))); – Rayon

+0

완벽하게 작동했습니다. 감사합니다! – Mayday

답변

2

기본 매개 변수를 사용할 수 있습니다. 함수 호출에서 값이 전달되지 않으면 각 매개 변수의 값을 설정할 수 있습니다.

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

fun(4); //4 
fun(); //3 
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

+0

또는 'fn = (a = [' ']) => console.info (... a)' – Bergi

+0

예 사실 나는 그것을 krizzus 대답 이후 게시하고 싶지 않았어. –