jQuery에서 동일한 DOM의 반복적인 selector를 사용을 방지하기 위해서나, K-V 형식으로 데이터를 저장할때 Object를 많이 사용한다.
이런 Object안에서 전체 Key를 찾아 순회할 때, Object.keys(obj)형식을 많이 사용한다.
특히, Object.keys(obj).forEach(function(k,v){})를 이용하여 Loop 문까지 한번에 처리하는 경우가 많은데,
여기서 Callback을 사용하는 경우 callback 호출후에도 루프가 Break되지 않는 문제가 생긴다.
var obj = { 'abc':1 , 'bcd':2'};
function run(obj, callback){
Object.keys(obj).forEach(function(k,v){
if(k == 'abc') return callback(v);
console.log(key);
});
}
function callback(value){
console.log('DONE', value);
}
run(obj, callback);
// LOG --> DONE abc
// LOG --> bcd
즉, return이 break 역할이 아닌 continue 역할이다.
이런 코드를 짜는 경우 지저분해지더라도 Object.keys(obj)를 배열로 받고, for loop를 수행하는게 좋다.
'프로그래밍 > HTML, Javascript, CSS' 카테고리의 다른 글
[JS] Javascript를 이용하여 HTML 주석 지우기 / 숫자 콤마 넣기 (0) | 2019.03.28 |
---|---|
[JS] CORS 이슈 Access-Control-Allow-Origin 문제 해결하기 (0) | 2019.03.28 |
[JS] 구글 맵을 이용하여, 주소를 Geolocation(위도, 경도)로 바꾸기 (0) | 2019.03.28 |
[자바스크립트] Associative array 정렬하기 (0) | 2019.03.11 |
[Node.js / Javascript] 초당 처리 횟수 제한을 위한 윈도우 함수 (0) | 2019.03.04 |