Note 소괄호로 감싸는 이유
앞의 코드를 입력할 때 소괄호로 감쌌습니다. 원래 의도한 코드는 다음과 같지만, 이대로 실행하면 에러가 발생합니다.
{} === {};
Uncaught SyntaxError: Unexpected token '==='
자바스크립트에서 중괄호({})는 객체 리터럴을 의미하기도 하지만, 블록 문(Block Statement)을 의미하기도 합니다. if 문이나 while 문에서 실행문에 중괄호로 감싼 코드를 넣을 수 있는 이유가 중괄호가 문이기 때문입니다. 자바스크립트가 중괄호가 객체 리터럴인지 블록 문인지 헷갈려 할 때 소괄호로 감싸 주면 확실하게 객체 리터럴이라는 것을 인식시킬 수 있습니다.
비슷한 이유로 함수끼리 비교할 때도 소괄호로 감싸면 함수 선언문이 아니라 함수 표현식임을 자바스크립트에 알릴 수 있습니다.
function a() {} === function b() {};
Uncaught SyntaxError: Unexpected token '==='
(function a() {} === function b() {});
< false