2013-05-30 7 views
2

아래 코드를 이해하는 데 어려움을 겪고 있습니다. 나는 자바 배경에서 온다. 어떻게 읽어야합니까? 거기에 좋은 자바> 자바 스크립트 도서/튜토리얼 내가보고 있어야합니까?자바 스크립트 함수 이해하기

function sum(numbers) { 
    var total = 0; 

    forEach(numbers, function (number) { 
     total += number; 
    }); 

    return total; 
} 
show(sum([1, 10, 100])); 

는 ... 내가 foreach는 (숫자, 기능 (수) 찾고 있어요 http://eloquentjavascript.net/chapter6.html

에서 추출 코드입니다. 어디 익명 함수는?

답변

2

그것에서 '수'를 얻을 것이다 숫자에서 숫자를 가져옵니다. foreach가 말한 것은 숫자의 각 요소에 대해 해당 요소가있는 익명의 함수를 호출한다는 것이고 그 요소는 숫자라고하지만 아무 것도 호출 할 수 있습니다.

5

forEach의 출처를 확인하십시오.

function forEach(array, action) { 
    for (var i = 0; i < array.length; i++) 
    action(array[i]); 
} 

forEach

두 개의 인자 수용 : 배열 및 콜백 (즉 함수). 루프에서 콜백을 호출하고 매번 "현재"배열 요소를 인수로 전달한다는 것을 알 수 있습니다. 이것이 바로 콜백의 형식 파라미터 number에 대한 것입니다.

이 다른 방법을 넣으려면 - 당신이 쉽게 이해할 수 :

function say(callback, what) { 
    callback(what); 
} 

say(hello, "world"); 

: 당신은 당신이 많이 보여 것과 같은 코드에 도착 콜백으로 hello를 사용하는 경우

function hello(what) { 
    alert("Hello " + what); 
} 

hello("world"); 

See it in action.

마지막으로 콜백 작동 방식과 그 용도가 무엇인지 검토하면 도움이 될 것입니다. here이 주제에 대한 또 다른 대답입니다.

+0

'forEach'의 소스가 아닙니다 ... – Alnitak

+0

@Alnitak :'forEach'의 소스는 'Array.forEach'가 아니라 질문에 관한 것입니다. – Jon

+0

@Alnitak [예. 네, 그렇습니다.] (http://eloquentjavascript.net/chapter6.html) – h2ooooooo

1

당신이 혼란스러워하는 점은 forEach의 기본 메커니즘을 보지 못하고 있다는 것입니다. 만약 당신이 열어 보려고한다면, 그 함수는 익명의 함수를 두 번째 매개 변수로 기대하며, 필요한 모든 것을 IT에 전달합니다. 따라서 함수를 실행할 때 parm이 채워지 길 기대할 수 있습니다. 다른 언어의 언어를 사용하면 분명히 싫증나 겠지만, 작동하도록 설계된 방식으로 작동해야한다고 믿어야합니다.