[노란책] 언어의 기초

03. 언어의 기초

Strict Mode

자바스크립트는 다른 언어에서 문법을 빌려왔지만, 블록 레벨 스코프만 지원하는 등(ES5의 경우) 다르게 동작하는 경우가 있다. 이를 모르고 사용했을 때, 코드가 의도와 다르게 실행되거나 조용히 에러가 나는 경우가 있다. 이런 경우를 방지하기 위해 Strict Mode가 등장하였다.

Strict Mode를 적용하고자 하는 곳 최상단에 use strict;라고 선언한다. 함수 내에서도 선언 가능하다.

모듈에서는 스트릭트 모드가 기본이기 때문에, 선언할 필요가 없다.

구문 끝에 ;를 써야할까?

자바스크립트는 세미콜론을 자동으로 붙여주기 때문에 에러가 나지 않는다.

하지만, ASI(Automatic Semicolon Insertion) 규칙으로 인해 개발자의 의도와 다르게 세미콜론이 붙을 수 있다.

책에서는 이런 경우를 방지하기 위해 세미콜론을 쓰라고 권장한다. 개인적인 생각으로는 린트가 이런 오류를 충분히 잡아주고 있으니 세미콜론은 안 써도 될 것 같다.

Truthy, Falsy value

True/False를 판단할 때, Boolean 값으로 형변환을 하게 되는 데, True로 변경되는 값을 Truthy, False로 변경되는 값을 Falsy라고 함

=====

== 은 형변환을 해서 비교하고, === 은 형변환 없이 값이 동일한 지 비교한다. ==과 != 대신 ===과 !==을 사용하도록 권장한다.

if, for 문 안에서 로컬 스코프가 생기지 않는다.

var 키워드로 생성한 변수는 블록 레벨 스코프를 지원하지 않는다. 그래서 if, for문이 종료되고 나서도 남아있으므로 주의해야 한다.

함수

파라미터 타입이나 갯수를 확인하지 않는다. 함수 호출 시 전달한 파라미터는 argument에 전달된다.

arguments 객체는 length 프로퍼티를 갖는 데, 이 값은 전달한 파라미터의 갯수이다.

파라미터의 갯수가 2개일 경우, arguments[0], arguments[1] 등으로 접근이 가능하다. arguments의 값을 직접 변경할 수 없다.

다른 언어에서와 달리, 함수는 오버로딩할 수 없다.