2017-11-19 1 views
0

함수 배열이 있습니다. 그런 다음 forEach 루프를 사용하여 인수를 이러한 함수에 전달합니다. 첫 번째 함수를 호출하려고 할 때 '헤이 (hey)'대신 콘솔에서 정의되지 않음forEach 및 map을 사용하여 함수 배열에 인수를 전달할 수 없습니다.

그런 다음 이전 배열에서 새 배열을 만들려고합니다. map을 사용하여 각각의 인자가 전달 된 함수의 배열을 얻으려고 시도하지만 대신에 3 개의 정의되지 않은 항목의 배열을 얻습니다. 그래서 함수를 호출 할 수도 없습니다.

const arr = [(arg) => {console.log(arg)}, (arg) => {}, (arg) => {} ]; 
 
    arr.forEach(func => func('hey')); 
 
    arr[0](); 
 

 
    const arr2 = arr.map(func => func('ho')); 
 
    console.log(arr2); 
 
    arr2[0]();

두 경우 모두에서 문제는 무엇 ?

+0

당신은 함수를 호출하고 그들은 아무것도 – charlietfl

답변

1

아무런 문제가 없으므로 arr[0]();undefined을 인쇄합니다. 첫 번째 경우에는 문제가 없습니다.

두 번째 경우 결과 배열에는 undefined을 반환하는 각 함수를 호출 한 결과가 포함되어 있으므로 arr2에 호출 할 함수가 없습니다.

코드 단편에 HTML 섹션의 JS가 있으므로 전혀 실행되지 않았습니다.

const arr = [(arg) => { console.log(arg) }, (arg) => {}, (arg) => {}]; 
 
arr.forEach(func => func('hey')); 
 
arr[0](); // <-- You're passing no argument here 
 

 
// This invokes the functions, and builds an array of the functions' 
 
// return values, all of which are `undefined`. 
 
const arr2 = arr.map(func => func('ho')); 
 
console.log(arr2); 
 
arr2[0]();

+0

을 반환하지 않는 그래서 나는이 중 하나를 호출 할 수 있습니다, 내가 foreach 루프에서 배열의 모든 항목에 인수를 전달 생각했습니다 이 인수를 갖는 함수. 스 니펫을 수정했습니다. 감사합니다. –

+0

''hey'' 인수는 forEach' 콜백 함수의 각 함수에 전달하지만, 실제로는 첫 번째 함수 만 사용합니다. 마지막 두 가지는'arg'를 사용하지 않습니다. –

+0

답변 해 주셔서 감사합니다. 그럼에도 새로운 질문이 나타납니다. ** forEach (func => func ('hey')); **와 같은 빈 배열에서 forEach를 호출하면 호출 할 함수가 없어도 오류가 발생하지 않습니다. –

관련 문제