다른 프로그래밍 언어와 마찬가지로 어떤 알고리즘을 선택하고 코드를 어떻게 분해했느냐에 따라 성능 차이는 확연히 달라진다. 1) for, while, do while 모두 성능은 비슷하다 빠른 루프도, 느린 루프도 없다. 2) 객체에 속성에 대해 모르는 상태에서는 for-in 구문을 쓰지 말것 3) 반복문의 성능을 올리기 위해서는 작업을 줄이고 반복 횟수를 줄이는 것 4) 참조테이블 사용 5) 브라우저의 콜 스택 크기에 따라 자바스크립트가 몇 번까지 재귀를 실행 할 수 있는지 다르다. 6) 스택오버플로우가 나면 재귀함수를 사용하지 말고 반복문 알고리즘을 사용하거나 메모이제이션을 사용하라
DOM은 메모리를 많이 차지하는 요소중 하나이며 전역으로 사용되기 때문에 사용을 조심히 다루는 것이 홈페이지에 속도를 최적화 할 수 있다. [자바스크립트 성능 최적화 中] 1) DOM접근을 최소화 하고 자바스크립트에서 많은 구문을 작성하라 2) 자주 접근하는 DOM은 참조를 지역변수에 하여 사용하라 3) HTML 컬렉션(getElementyById, getElementsByTagName 등등)은 문서를 동적 반영하므로 조심히 다루고 length 같은 것은 변수를 복사헤서 사용하고 무거운 작업을 할 때에는 배열에 담아서 사용하라 4) 가능한 querySelectorAll 같은 빠른 API를 사요하라 5) 리페인트와 리플로우를 항상 생각하라. 스타일 변경은 한 번에 묶어서 처리하고, DOM트리를 조작할 때는..
모든 DOM 혹은 CSS 등에서 애니메이션을 넣어야 하는 상황이 온다면 해당 애니메이션 엘리먼트 요소를 절대값으로 위치하는 것이 좋다. 이유는 간단하다. 리플로우를 방지하기 위함이다. 절대값이 아닌 상대값(relative)로 애니메이션을 구현하게 된다면 다른 엘리먼트들도 변경이 되어 리플로우 되어 DOM 속도가 느려지게 된다. 절대값으로 지정하게 되면 애네메이션으로 지정된 엘리먼트만 동작하기 때문에 다른 엘리먼트 요소에 대해서 리플로우를 최소화 시킬 수 있다. 무슨말인지 모르겠는가? 리플로우를 공부하면 알 것이다.
자바스크립트에서 preventDefault, stopPropagation 은 비슷해 보이면서도 다른 목적을 가지고 있는 이벤트 핸들러 함수이다. 이 함수의 큰 목적은 preventDefault : 현재 객체에 있는 모든 실행요소를 멈춘다. stopPropagation : 상위 노드로 가는 이벤트를 멈춘다. 1. stopPropagation 두개의 이벤트 함수를 이해하기 위해서는 이벤트 버블링을 알아야 한다. 위와 같은 간단한 예제를 보면 클릭을 클릭하면 어떻게 실행이 될까? 1) parent -> child 2) child -> parent 답은 2번이다. 이벤트 버블링은 현재 있는 노드부터 상위(부모)노드로 올라가면서 진행이 된다. 그런데 나는 여기서 클릭을 누르면 child만 띄우고 parent 띄우..