JavaScript 코드 최적화
저자: Gregory Baker, GMail 소프트웨어 엔지니어 및 Erik Arvidsson, Google Chrome 소프트웨어 엔지니어
필수 경력: JavaScript 실무 지식
클라이언트 측 스크립팅을 통해 애플리케이션을 더욱 동적이고 활동적으로 만들 수 있습니다. 그러나 브라우저에서 코드를 구문 분석하면 효율성 문제가 발생할 수 있으며 이러한 성능 차이는 클라이언트마다 다릅니다. 여기서는 JavaScript 코드 최적화에 대한 몇 가지 팁과 모범 사례를 논의하고 제공합니다. 문자열 연결 작업은 Internet Explorer 6 및 7의 가비지 수집에 큰 영향을 미칩니다. 이 문제는 Internet Explorer 8에서 해결되었지만 문자열 연결 IE8 및 기타 IE가 아닌 브라우저(예: Chrome)에서 약간 더 효율적입니다. 많은 사용자가 Internet Explorer 6 또는 7을 사용하고 있으므로 문자열 작성 방법에 매우 주의해야 합니다.
다음 샘플 코드가 있습니다.
코드 복사
IE에서 클로저 사용에 대한 자세한 내용은 IE JScript 성능 권장 사항 파트 3: JavaScript 코드 비효율성을 확인하세요.
<span style="COLOR: #336600">with</span>
코드에서 <span style="COLOR: #336600">with</span>
를 사용하지 마세요. 범위 체인을 수정하여 다른 범위에서 변수를 조회하는 데 비용이 많이 들기 때문에 성능에 매우 나쁜 영향을 미칩니다.
메모리 누수는 웹 애플리케이션에서 매우 흔한 문제이며 심각한 성능 문제를 일으킬 수 있습니다. 브라우저의 메모리 사용량이 증가하면 나머지 사용자 시스템과 함께 웹 애플리케이션의 속도가 느려집니다. 웹 애플리케이션의 메모리 누수는 JavaScript 엔진과 브라우저 DOM의 C 개체 구현 간의 순환 참조입니다(예: JavaScript 엔진과 Internet Explorer의 COM 인프라 간 또는 JavaScript 엔진과 Firefox의 XPCOM 인프라 아키텍처 룸 간).
다음은 메모리 누수를 방지하기 위한 몇 가지 경험 법칙입니다.
가장 일반적인 순환 참조 패턴 [DOM 요소--> 이벤트 핸들러--> 클로저 범위--> DOM]은 이 문서에 있습니다. 이 문제를 방지하려면 Google doctype, Dojo 또는 JQuery.
또한 IE에서 인라인 이벤트 핸들러를 사용하면 또 다른 유형의 누출이 발생합니다. 이는 일반적인 순환 참조 누출이 아니라 메모리의 임시 익명 스크립트 개체 누출입니다.이해하세요. 및 Internet Explorer 누출 패턴 해결 의 "DOM 삽입 순서 누출 모델" 섹션도 에 있으며 JavaScript Kit 튜토리얼에도 예제가 있습니다. expando 속성을 사용하지 마세요
"순환 참조" 섹션을 참조하세요.