타쿠꺼

자바스크립트 패턴 본문

Book

자바스크립트 패턴

kimtaku 2016. 6. 18. 23:19

기초



1. 전역변수의 최소화

 - 전역변수는 다른 외부코드들과 혼용사용되면 오류를 야기시킬 수 있기 때문에 사용을 최소화 하여야 한다.

 - var로 변수를 선언하지 않으면 암묵적으로 전역변수로 정의된다. 따라서 항상 var를 선언하도록 하자.

 - 전역변수를 var로 선언하면 delete되지 않는다.

 - 암묵적 전역변수는 사실상 전역객체(브라우저의 경우 window)의 프로퍼티이므로 delete로 삭제 가능하다.

 - var 선언을 연쇄적으로 사용할 때 암묵적 전역객체가 생성될 수 있다.


ex )

function func() {

var a = b = 0;

}


 - 이 경우, a는 지역변수지만 b는 암묵적 전역변수다. 이는 평가(evaluation)가 오른쪽에서 왼쪽으로 진행되기 때문이다.

 - 즉 b = 0이 실행되고 이것이 var a = b 가 되는 것이다.

 - 전역객체 얻기


ex )

var global = (function () {

return this;

}());


 - 메서드나 생성자, new를 사용하여 호출하지 않으면 this는 전역객체를 가리키기 때문.

 - 함수 상단에 var로 변수를 미리 선언하고 사용하는 것이 좋다.


ex )

var myname = 'global'; // 전역변수

function func () {

console.log(myname); // undefined

var myname = 'local';

console.log(myname); // 'local'

}


이는 실행 컨텍스트가 생성될 때 변수와 객체들이 먼저 생성되고 값은 런타임 단계에서 대입되기 때문에 myname이 지역변수로써 존재해서 전역변수값이 출력되지 않는것이다. 그런데 지역변수로써 존재하더라도 값의 대입이 뒤에 있으므로 값이 undefined으로 나오는 것이다.



2. for 루프

 - for 루프의 변수를 한번에 초기화하는 것이 좋다.

 - 특히 array가 배열이 아닌 HTMLCollection이라면, 접근할 때마다 속도가 느려지므로 미리 캐시를 해두는것이 좋다.


ex )

for (var i = 0, max = array.length; i < array.length ; i++) { }



3. parseInt() 사용

 - parseInt는 문자열을 숫자로 변환시켜주는데, 두번째 매개변수로 기수를 받는다. 보통 이를 생략하는 경우가 있는데, 그러면 0으로 시작되는 문자열을 받을 때 이를 8진수로 해석하는 경우가 생길 수 있으므로 대개의 경우 10을 넘겨줘서 10진수로 다뤄야 한다.


ex )

var month = '08';

month = parseInt(month, 10);


 - 단순한 숫자문자열을 변환 시킬 때에는 다음과 같은 방법이 더 빠르다.


ex )

console.log(typeof(+'08')); // number

console.log(typeof(Number('08'))); // number



4. 명명패턴

 - 명명패턴은 일종의 암묵적인 약속이다. 

 - 생성자 함수는 첫글자를 대문자로 사용한다.

 - 함수명은 camelCase로, 변수는 variable_name 으로 사용한다.

 - private 멤버로  구현된 변수는 앞에 _를 붙여 사용한다.




리터럴과 생성자



1. new Object()로 객체를 생성하지 마라.

 - 매개변수로 넘긴 값에 따라 Object, Number, String 등으로 바뀜.

 - 리터럴 표기법에 비해 속도가 느림.

 


Comments