function myforEach(arr, func){
for(var i=0; i<arr.length; i++){
func();
}
}
var arr = [1,2,3];
function func2(){
return 3+3;
}
myforEach(arr, func2); // undefined
내가 두 개의 인수 배열과 소요 myforEach 함수를 생성 함수는 for 루프 내에서 아래에 3 번 호출되는 인수 func로 전달됩니다. 그런 다음 3 + 3을 더하는 값을 반환하는 다른 함수 func2를 선언합니다. 그런 다음 두 개의 인수를 사용하여
myforEach
을 실행하고 콘솔에서 3 번 값 6을 인쇄 할 것을 기대합니다. 그러나 반환되는 것은 정의되지 않았습니다.
function func2(){
console.log(3+3);
}
그리고 난 콘솔은 6 세 번 기록 얻을 다시 실행 :
내가 FUNC2 문에 변경
. 내가 괄호function func2(){alert;} // undefined
없이 FUNC2 내 경고를 넣어하려고하지만 괄호
function func2(){alert();}
를 추가 할 때 다음 세 번
경고 경우 myforEach(arr, alert); // (3)alert
취해야 할
function func2(){
console.log("hi");
}
myforEach(arr, func2); // (3)hi
: myforEach(arr, func2); // (3)6
그럼 내가 다시에 FUNC2 문을 변경 그래서 질문은 function func2(){return 3+3;}
가 6 번을 3 번 반환하지 않는 이유는 무엇입니까? for 루프 내에서 func()는 괄호 안에 있기 때문에 추가 된 모든 함수가 호출됩니다. func2가 제대로 호출되지 않는 이유는 무엇입니까?
나는 stackoverflow에 대한 연구를했지만, 내가 얻을 수있는 것은 잃어버린 것이지만 이유와 근본 원인에 대한 자세한 설명은 없다.
여기에 늦었고 뭔가 빠지거나 너무 졸 았는지 알 수 없습니다. 어떤 설명이 도움이 될 것입니다. 고마워요 :)
이 될 것입니다.하지만 func2 내부에서 3 + 3이 반환되므로 값이 콘솔에서 출력 될 것으로 예상했지만 잘못된 것 같습니다. func()가 3 번 호출되기 때문에 루프 내에서 func()에 반환 값을 추가하는 것이 6 번 3 번 출력되는지 궁금합니다. 그러나 콘솔에서 단 6 번 출력하는 것입니다. 왜 어떤 이유가 있습니까? @ T.J. Crowder 님, 감사합니다. :) – Alonso
@AlonsoAhmetaj : 명시 적 반환 값을 설정하지 않은 함수를 호출하기 때문에 사용자가 입력 한 가장 바깥 쪽 표현식의 결과를 제외하고 콘솔에 자동으로 출력되는 것은 없습니다 ('undefined').). 'return func(); '으로 변경하면 첫 번째 루프 반복에서 myforEach가 종료되므로 한 번만 6 번만 볼 수 있습니다. –
그래서 공유하는 것을 신경 쓰지 않는다면 3 번 출력하는 적절한 방법은 무엇일까요? 나는 console.log를 사용했는데 일했지만 생각은 그 값을 세 번 돌려주는 또 다른 방법 일 것입니다. 변수에 추가 할 수도 있습니다. 감사! – Alonso