2018. 3. 19. 12:53 JavaScript/개인 스터디
[JavaScript] 함수형 프로그래밍 for-each
함수형 프로그래밍을 부합하게 해주는 for-each 함수
Array.prototype.forEach()
arr.forEach(callback[, thisArg])
callback
각 요소에 대해 실행할 함수
currentValue
> 배열에서 현재 처리 중인 요소
index
> 배열에서 현재 처리중인 요소의 인덱스
array
> forEach() 가 적용되고있는 배열
thisArg
선택사항, callback 을 실행할때 this로서 사용하는 값
반환값
undefined
** Exception 처리를 하지 않는 한 forEach 를 정지 또는 탈출이 불가능합니다.
(stop,break,continue, 등등) -> 이 행동이 필요한 경우는 forEach 의 잘못된 사용
기본 for문을 사용하길 권장
[참조] developer.mozilla.org
forEach () 의 함수 사용의 예
function logArray(element,index,array){ console.log('a[' + index + '] = ' + element); } [2,5, , 9].forEach(logArray);
결과
a[0] = 2
a[1] = 5
a[3] = 9
this arg를 사용시
function Counter(){ this.sum = 0; this.count = 0; } Counter.prototype.add = function(array){ array.forEach(function(entry){ this.sum += entry; ++this.count; },this); /// ^ this 확인 }; // Counter.prototype.add = function ... var obj = new Counter(); obj.add([2,5,9]); /* forEach 함수의 function(entry) 옆 thisarg부분을 Counter의 this를 넘김으로써 Counter Object의 add 함수를 추가하면서 object자체의 sum과 count값을 접근하여서 수정할수 있게 된다. 이와같은 this를 넘겨서 사용도 가능 */
결과
obj.count
3
obj.sum
16
Simple for-each 작성
// sample function forEach function forEach_(list,callback) { for (var n=0; n< list.length;n++) { callback.call(list[n],n); } } /* list : array 형태의 배열을 파라미터로 받음 callback : 첫번째 파라미터로 들어온 list를 순회하여서 해당 함수(callback)으로 던져준다. call 은 (1) function, (2) ...... 의 형태를 띄며 1. array_ 가 첫번째 파라미터로 들어간다. list 과 매핑 2. for문을 통해서 list 의 길이만큼 순회를 한다. 3. list[n] 값과 index 값을 callback 에 넘긴다. 동시에 call을 사용하여서 넘김 //** call이 없을 경우에 list[n] ,index가 넘어가면 callback function 에서 index에 array[n] 인 값이 들어갈것이다.index가 아니라 call을 같이 사용하였기 때문에 들어온 array 에 대한 this 를 가지고 두번째 n 을 파라미터로넘기기 때문에 n = index로 넘어가고 this는 넘기는 list[n] 자체가 들어간다. 해당 코드를 종료 보면 */ // smaple Array var array_ = ['First','Second','Third','Forth','Fifth']; forEach_(array_,function(index){ console.log(this); this == array_[index] ? console.log(array_[index]) : console.error("not Exist"); });
결과
this는 list[n]
index는 n 이 들어감이 확인된다. 'First', 'Second'가 나온이유는 array_[index]로 출력하였기 때문
callback 함수 만드는법을 따라 보았다. 아 물론 스터디이기 때문에 책을 보고
'JavaScript > 개인 스터디' 카테고리의 다른 글
[JavaScript] 함수 - 메모이제이션 (0) | 2018.03.27 |
---|---|
[JavaScript] 기본 내용 정리 (0) | 2018.03.19 |
[JavaScript] apply call bind 함수 메서드 (0) | 2018.03.15 |
[JavaScript] 함수의 param(파라미터) 과 args(인자) (0) | 2018.03.08 |
[JavaScript] 함수 유효범위 - 호이스팅(hoisting) (0) | 2018.03.06 |