5. 처리속도, 메모리 소비와 반환
화면의 깜빡임
사용자 행동에 대한 반응속도
다 종합해서 ‘성능’
6. 변수할당은 반복문 바깥에서
var a = [1,2,3,4];
var a = [1,2,3,4];
var test;
var len = a.length;
for(i=0; i<a.length; i++){
var test = 1;
}
for(i=0; i<len; i++){
test = i+1;
}
7. Closure 와는 비용을 비교해서
var a = [1,2,3,4,5,6];
var b;
a.forEach(function(n){
b = n % 2;
});
var a = [1,2,3,4,5,6];
<
a.forEach(function(n){
var b = n % 2;
});
http://jindo.dev.naver.com/jsMatch/?d=77&openResult=1
11. Selector 탐색 비용 최소화
getElementById
getElementsByTagName
getElementsByClassName
http://jindo.dev.naver.com/jsMatch/?d=86&openResult=1
12. Selector 탐색 비용 최소화
탐색 범위는 좁고 정확할 수록 좋
다
당연히 더 많은 범위를 찾을 때 더 오래 걸린
다
// jQuery
$(“.test”);
$(“#container”).find(“.test”);
// JindoJS
$$(“.test”);
$Element(“container”).queryAll(“.test”);
13. 이벤트 핸들러는 영역 단위로
이벤트 핸들러는 메모리를 소모한다
버블링(Bubbling)을 활용하자
14. 이벤트 핸들러는 영역 단위로
<ul id=“list”>
<li class=“a”>a</li>
<li class=“b”>b</li>
</ul>
$(“.a”).click(function(){ … });
$(“.b”).click(function(){ … });
15. 이벤트 핸들러는 영역 단위로
<ul id=“list”>
<li class=“a”>a</li>
<li class=“b”>b</li>
</ul>
$(“#list”).click(function(weEvt){
if($(weEvt.target).hasClass(“a”)){
…
}
});
16. 이벤트 발생 순서
domready > load
touchstart > click
mousedown > click
더 먼저 발생하는 이벤트를 활용할 수 있다면
그 이벤트를 활용하라
21. 네트워크 이야기 나온 김에…
네트워크 접속 횟수는 가능한 적
게!
HTTP Connection 할 때마다
기본적으로 소요되는 수백ms
무시 못 합니다 (특히 모바일)
22. 문자열 합치기에는 배열 활용
var a = ‚‛;
var a = [];
for(i=0; i<10; i++){
a += ‚a‛;
}
for(i=0; i<10; i++){
a.push(‚a‛)
}
a.join(‚‛);
Array(11).join(‚a‛);
무조건은 아니고, HTML 같이 긴 문자열 연산시!
24. less DOM Manipulation
Repaint:
Element Visibility 변화시, 레이아웃 자체를 변화하지는 않는 경우
(outline, visibility, 배경색)
DOM Tree 내에 존재하는 모든 노드의 Visibility 를
다 새로 검사하므로 상당히 비싼 작업
Reflow:
전체 페이지 자체의 레이아웃이 변화하는 경우
(appendChild, removeChild … )
25. less DOM Manipulation
<ul id=“list”></ul>
for(i=0;i<100;i++){
$(“#list”).append($(“<li>”).text(i));
}
http://jindo.dev.naver.com/jsMatch/?d=87&openResult=1
26. less DOM Manipulation
<ul id=“list”></ul>
var a = [];
for(i=0;i<100;i++){
a.push(“<li>” + i + “</li>”);
}
$(“#list”).html(a.join(“”));
http://jindo.dev.naver.com/jsMatch/?d=87&openResult=1