`var` 사용 여부
var
명령문에 변수를 도입해야하며 , 그렇지 않으면 전역 범위에 도달합니다.
엄격 모드 ( "use strict";
)에서 선언되지 않은 변수 할당이 발생ReferenceError
한다는 것을 언급 할 가치 가 있습니다.
현재 JavaScript에는 블록 범위가 없습니다. Crockford 학교는 함수 본문의 시작 부분에 var 문 을 넣도록 가르치고 Dojo의 스타일 가이드는 모든 변수가 가능한 가장 작은 범위에서 선언되어야한다고 읽습니다 . 합니다 ( let
문 및 정의 자바 스크립트 1.7에서 소개는 ECMAScript를 표준의 일부가 아닙니다.)
전체 범위 체인을 찾는 것보다 빠르기 때문에 정기적으로 사용되는 객체의 속성을 로컬 변수에 바인딩하는 것이 좋습니다. 최고의 성능과 낮은 메모리 소비를 위해 JavaScript 최적화를 참조하십시오 .
파일 또는`(function () {...}) ()`에있는 것들 정의하기
코드 외부에서 객체에 도달 할 필요가없는 경우 전체 코드를 함수 표현식으로 묶을 수 있습니다.이를 모듈 패턴이라고합니다. 성능상의 이점이 있으며 코드를 최소화하고 모호하게 할 수 있습니다. 전역 네임 스페이스를 오염시키지 않도록 할 수도 있습니다. JavaScript로 함수 랩핑 을 사용하면 측면 지향 동작을 추가 할 수도 있습니다. Ben Cherry에는 모듈 패턴에 대한 자세한 기사가 있습니다.
`this` 사용 여부
JavaScript에서 의사 클래식 상속을 사용하는 경우을 사용하는 것을 피할 수 없습니다 this
. 어떤 상속 패턴을 사용하는지는 맛의 문제입니다. 다른 경우에는 "this"없는 JavaScript 위젯 에 대한 Peter Michaux의 기사를 확인하십시오 .
`function myname ()`또는`myname = function ();`사용
function myname()
함수 선언이며 myname = function();
variable에 지정된 함수 표현식 myname
입니다. 후자의 형식은 함수가 일류 객체이며 변수와 마찬가지로 무엇이든 할 수 있음을 나타냅니다. 그들 사이의 유일한 차이점은 모든 함수 선언이 특정 범위에서 중요 할 수있는 범위의 최상위에 게양된다는 것입니다. 그렇지 않으면 동일합니다. function foo()
속기 형태입니다. 호이 스팅에 대한 자세한 내용은 JavaScript 범위 지정 및 호이 스팅 기사를 참조하십시오.
객체의 본문에서 "프로토 타입"을 사용하여 메소드 정의
그것은 당신에게 달려 있습니다. JavaScript에는 의사 클래식, 프로토 타입, 기능 및 파트의 네 가지 객체 생성 패턴이 있습니다 ( Crockford, 2008 ). 각각의 장단점이 있습니다. 비디오 대화에서 Crockford를 보거나 Anon이 이미 제안한 책 The Good Parts 를 얻으십시오 .
프레임 워크
JavaScript 프레임 워크를 선택하고 해당 규칙과 스타일을 연구하고 자신에게 가장 적합한 관행과 패턴을 찾으십시오. 예를 들어, Dojo 툴킷 은 다중 상속을 지원하는 객체 지향 JavaScript 코드를 작성할 수있는 강력한 프레임 워크를 제공합니다.
패턴
마지막으로, 일반적인 JavaScript 패턴 및 안티 패턴 을 탐색하기 위한 블로그 가 있습니다 . JavaScript에 대한 코딩 표준이 있습니까? 라는 질문도 확인하십시오 . 스택 오버플로