프로그래밍/JavaScript

자바스크립트 핵심 가이드 - 나쁜 점들 정리

seungdols 2016. 7. 9. 11:07

== 연산자

자바스크립트에서 비교 연산자는 다음과 같습니다.

==
!=
===
!==

다만, 차이가 조금 있다는 것입니다. 하지만, 자바스크립트 핵심 가이드에서는 ===를 사용하도록 권고하고 있습니다.

이유는 === 연산자는 같은 데이터 타입이고, 같은 값일 때 참값입니다.

하지만, == 연산자는 다른 데이터 타입이라면, 타입을 변환하여 비교 연산을 하게 됩니다.

이는 굉장한 손해일 수 있기에 사용하지 않는 것을 권한다는 생각을 합니다.

with 문

이는 잘 못보셨으리라 생각합니다. 못 본 이유는 안 좋기 때문이죠.

eval

이 또한, 쓰지 않는 것이 좋습니다. 문자열을 자바스크립트 컴파일러에 전달하고나서 결과를 실행하는 함수입니다.
고로, 인수에 대한 문자열에 의존적이고, 권한이 있어 다소 위험합니다.
가독성도 좋지 않으며, 인수로 넘어온 텍스트에 대해 권한이 많으므로 보안을 취약하게 만듭니다.

continue

반복문 내에서 특정 분기문과 결합하여 제어를 하위 구문을 실행하지 않고, 건너 띄게 됩니다.
이를 제거하면, 속도면에서 전보다 좋아질 가능성이 높습니다.

Switch (Fall Through)

switch(value){
case 10: console.log("10");
case 20: console.log("20");break;
default : console.log("default");break;
}

위 코드처럼 break;잊어버리거나, 로직상으로 흐르는 형태로 작성하면 상당히 위험합니다. 그렇기 때문에 흐르는 switch 구문은 지양해야 합니다.

non-Block 구문

if (value)
    print();
    setChange();

위 코드처럼 작성자의 의도를 파악하기 어렵고, 어떤 방향으로 동작해야 하는지 알 수 없습니다.(자바스크립트는 블록 스코프 기반이 아니라 함수 스코프에 의해 동작합니다만, 작성한 개발자의 로직 방향을 알 수 없다는 점입니다.)

++—

단일 증감 연산자를 흔하게 사용하게 되는데 오히려 버그 유발자이기 때문에 조심해야 한다는 것.

혹은 사용을 지양하는 것이 좋다고 합니다.

비트 연산자

자바스크립트는 하드웨어에 친화적인 언어가 아니므로 비트 연산자를 쓰는 것이 더 느릴 수 있습니다.

함수 문장 vs 함수 표현식

함수 문장 형태

function seungdols(){

}

함수 문장은 아래와 같은 함수 표현식의 축약 형태입니다. 고로, 아래와 같이 사용하는 것을 추천 한다고 합니다.

함수 표현식

var seungdols = function seungdols(){

}

데이터 타입 랩퍼

자바 언어에서 기본형 데이터 타입을 객체로 표현하고 싶을 때, 자바에서는 Wrapper Class를 사용합니다.
마찬가지로, 자바스크립트에서 데이터 타입 랩퍼가 존재합니다. 하지만, 필요가 없으므로 사용을 지양합니다.

또한, new Object / new Array를 사용하지 말고, {}[]를 사용하긴 추천합니다.

var myObj = new Object;
//보다는 

var myObj = {};를 사용하자는 취지이며, 배열도 같습니다.

new 연산자

new 연산자는 피연산자의 프로토타입 멤버들을 상속하는 객체를 만들고, 이 객체를 this에 바인딩 후 피연산자를 호출 합니다.

이는, 다소 위험하긴 합니다. 왜냐하면, new를 빼먹게 되면, 결국 전역 객체에 해당 객체가 바인딩 됩니다.

new 연산자를 사용하고자 하거든, 변수 이름을 첫 글자를 대문자로 하여 명확하게 표시하는 것이 좋습니다.

void

자바스크립트에서는 필요하지 않은 데이터 타입입니다.


반응형