1. 물건의 소유권을 존중한다 인스턴스나 프로토타입에 속성을 추가하지 마십시오; 인스턴스나 프로토타입에 메서드를 추가하지 마세요; 이미 존재하는 방법을 재정의하지 마십시오. 가장 좋은 방법은 본인이 소유하지 않은 객체를 절대 수정하지 않는 것입니다. 객체를 소유한다는 것은 당신이 직접 만든 것, 예를 들어 당신이 직접 만든 사용자 지정 타입이나 객체 문자 그대로를 의미합니다. 배열과 문서는 분명히 당신의 것이 아니며, 코드가 실행되기 전에 존재합니다. 2. 전역 변수 회피 최대 전역 변수를 만들어서 다른 객체와 함수들이 존재할 수 있도록 하세요. 다음 예시들을 살펴보세요:
//两个全局量——避免!! var 이름 = "니콜라스"; 함수 sayName(){ alert(name);
} 이 코드는 두 개의 전역 양을 포함합니다: 변수 이름과 함수 sayName(). 사실, 다음 예시에서 보듯이 두 것을 모두 포함하는 객체를 만들 수 있습니다:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. null과 비교하지 마세요 만약 값이 참조 타입이어야 한다면, 인스턴스 연산자를 사용해 그 구성자를 검사합니다; 값이 기본 타입이어야 한다면, typeof를 사용해 타입을 검사합니다; 객체에 특정 메서드 이름을 포함하고 싶다면, typeof 연산자를 사용하여 지정된 이름의 메서드가 객체에 존재하는지 확인하세요. (여기서 저는 웹 프론트엔드 학습 및 교류 그룹을 추천합니다: 675498134, 초보자든 신이든, 저는 여러분이 와서 배우고 소통하며 때때로 유용한 자료를 공유하길 환영합니다. 최신 프론트엔드 자료와 튜토리얼도 제가 직접 준비해 드리고, 매일 실시간으로 프론트엔드 지식을 설명하는 기술 전문가들이 있습니다. 초보자와 고급 친구 모두 함께 배우고 소통하며 함께 발전할 수 있습니다. ) 4. 상수 사용 Javascrip{filter}t는 상수라는 공식적인 개념은 없지만, 유용합니다. 데이터 데이터를 애플리케이션 로직과 분리하는 이 아이디어는 오류를 유발하지 않고 데이터를 변경할 수 있습니다. 다음 예시들을 살펴보세요: var 상수 = { INVALID_VALUE_MSG: "유효하지 않은 값!", INVALID_VALUE_URL: "/errors/invalid.php" }; function validate(value){ 만약 (!value){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. 전역 탐색 피하기 스크립트 성능을 최적화하는 데 가장 중요한 것은 글로벌 조회에 주의를 기울이는 것입니다. 전역 변수와 함수를 사용하는 것은 스코프 체인에서 검색을 수반하기 때문에 로컬 변수보다 확실히 비용이 많이 듭니다. 다음 기능을 살펴보세요: function updateUI(){ var imgs = document.getElementsByTagName("img"); (var i=0, len=imgs.length; 렌<; i++){ imgs[i].title = document.title + " image " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "업데이트 완료.";
} 함수는 겉보기에는 전혀 문제없어 보일 수 있지만, 전역 문서 객체에 대한 참조가 세 개나 포함되어 있습니다. 페이지에 여러 이미지가 있을 경우, for 루프 내 문서 참조가 여러 번 또는 수백 번 실행되며, 매번 범위 체인 조회가 수행됩니다. 문서 객체를 가리키는 로컬 변수를 생성하면, 전역 조회 횟수를 한 번 제한함으로써 이 함수의 성능을 향상시킬 수 있습니다: function updateUI(){ var doc = 문서; var imgs = doc.getElementsByTagName("img"); (var i=0, len=imgs.length; 렌<; i++){ imgs[i].title = doc.title + " image " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "업데이트 완료."; 여기서 먼저 문서 객체를 로컬 문서 변수에 넣으세요; 그 다음 원본 문서를 나머지 코드로 교체하세요. 원래 버전과 비교했을 때, 현재 기능은 전역 조회가 하나뿐인데, 확실히 더 빠릅니다. 6. 수행을 위한 기타 주의사항 네이티브 메서드가 더 빠릅니다 - 가능하면 Javascrip{filter}t 같은 메서드로 직접 다시 작성하지 말고 네이티브 메서드를 사용하세요. 네이티브 메서드는 C/C++와 같은 컴파일된 언어로 작성되어 Javascrip{filter}t보다 훨씬 빠릅니다. Javascrip{filter}t에서 가장 잊혀지는 점은 Math 객체에서 찾을 수 있는 복잡한 수학 계산입니다; 이 메서드들은 sine과 cosine 같은 Javascrip{filter}t로 작성된 다른 어떤 방법보다 훨씬 빠릅니다. Switch 문이 더 빠릅니다 - 복잡한 if-else 문장들이 연속되어 있다면, 이를 하나의 switch 문으로 변환해 더 빠른 코드를 얻을 수 있습니다. 또한 케이스 진술을 가장 가능성 높은 순서부터 가장 가능성 낮은 것까지 정리하여 스위치 문장을 더 정밀하게 다듬을 수 있습니다. 비트 연산자는 더 빠릅니다 - 수학 연산을 수행할 때, 비트 연산은 불리언이나 산술 연산보다 더 빠릅니다. 산술 연산을 비트 연산으로 선택적으로 대체하면 복잡한 계산의 성능을 크게 향상시킬 수 있습니다. 모듈러스, 논리, 합 논리와 같은 논리는 비트 연산으로 대체된 것으로 간주될 수 있습니다.
|