본문 바로가기

웹/공부

YOU DON`T KNOW JS - 타입과 문법, 스코프와 클로저 : 1

반응형

해당 글은 'YOU DON`T KNOW JS - 타입과 문법, 스코프와 클로저' 라는 책을 읽으며

나름의 정리를 하는 글입니다.

 

 

 

 

 

2019-09-24

* 자바스크립트에는 7가지의 내장 타입 존재

  null, undefined, boolean, number, string, object, symbol(ES6[15년 6월 공표]부터 추가)

  object를 제외한 나머지 타입들을 '원시 타입(Primitives)'이라고 함

 

* typeof를 통해 function을 확인하면 function이라는 문자열을 반환하기에 한개의 타입처럼 보이나

  명세에서는 '호출 가능한 객체(Callable Object)', 즉 내부 프로퍼티[[Call]]로 호출할 수 있는 객체 라고 명시되어 있음

  쉽게말해 object의 하위 타입

 

* 변수는 어떤 형태의 값이라도 가질 수 있음

  그렇기에 값은 타입이 있지만 변수는 타입이 없음

 

* typeof를 통해 어떠한 변수에 대해서 반환 받는 타입은

  변수에 대한 타입이 아니라, 변수에 담긴 값에 대한 타입을 반환 받는 것

 

* undefined(값이 없는)와 undefined(선언되지 않은)은 자바스크립트에서 둘은 완전히 다른 개념

  undefined(값이 없는)는 변수는 선언되었으나 아무런 값도 없는 상태

  undefined(선언되지 않은)는 접근 가능한 스코프에 변수 자체가 선언되지 않은 상태

 

  var a;

  

  a; // undefined

  b; // ReferenceError : b is not defined

 

  typeof a // undefined

  typeof b // undefined

 

  위 코드에서 보면 a라는 변수는 선언되었고 b는 선언조차 되지않은 상태일 때

  a를 찍어보면 undefined(값이 없는)라고 나오고,

  b를 찍어보면 에러가 나옴

  typeof를 통해 a를 확인하면 undefined라고 나오고,

  typeof를 통해 b를 확인해도 undefined라고나옴

  typeof를 통해 선언되지 않은 변수를 확인시 브라우저는 오류처리를 하지 않는데

  이것이 바로 typeof만의 독특한 '안전가드(safety guard)'임

 

반응형