다음 책들과 MDN의 내용을 모아 자바스크립트 핵심 위주로 정리해 보았습니다. 여러 권의 책을 한 글로 훑어볼 수 있도록 최대한 간결하게 정리하겠습니다.
모던 자바스크립트 Deep Dive - 이웅모
You Don’t Know JS - Kyle Simson
자바스크립트는 왜 그 모양일까?(How JavaScript Works) - Douglas Crockford
자바스크립트 완벽 가이드(JavaScript: The Definitive Guide 7/E) - David Flanagan
자바스크립트 값은 모두 불 값으로 변환될 수 있습니다.
데이비드 플래너건 , 『자바스크립트 완벽 가이드』, 인사이트(2022), p43.
undefined
null
0
-0
NaN
""
undefined의 경우 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값으로 시스템 레벨에서 값이 없는 것이라고 볼 수 있다. 변수를 참조했을 때 undefined가 반환된다면 참조한 변수가 선언 이후 값이 할당된 적이 없는 변수라는 점을 알 수 있다.
undefined를 직역하면 “정의되지 않은”이다. 일반적으로 정의란 개념은 어떤 대상을 명확하게 규정하는 것을 의미한다. 자바스크립트의 undefined에서 말하는 정의란 변수에 값을 할당하여 변수의 실체를 명확히 하는 것을 말한다.
이웅모 , 『모던 자바스크립트 Deep Dive』, 위키북스(2020), p66.
이러한 undefined를 개발자가 의도적으로 변수에 할당하는 것은 본래 취지에 어긋나므로 변수에 값이 없다면 대신 null을 사용하는 것이 더 적합해보인다.
null의 경우 주로 프로그램 레벨에서 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
프로그래밍 언어에서 null은 변수에 값이 없다는 것을 의도적으로 명시(의도적 부재, intentional absence)할 때 사용한다. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다. 이는 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션을 수행할 것이다.
이웅모 , 『모던 자바스크립트 Deep Dive』, 위키북스(2020), p67.
주의할 부분으로 typeof undefined는 “undefined”를 반환하지만 typeof null은 “object”를 반환한다는 점이 있다.
null에 typeof 연산자를 사용하면 문자열 “object”를 반환하는데, 이로 미루어 null은 ‘객체가 없다’는 것을 나타내는 특별한 객체 값이라고 볼 수 있습니다.
데이비드 플래너건 , 『자바스크립트 완벽 가이드』, 인사이트(2022), p45.
또 하나의 이상한 작동으로 “use strict”를 사용하지 않은 느슨한 모드의 자바스크립트에선 undefined란 식별자에 값을 할당할 수 있다. 그러나 협업을 위해서도 이런 짓은 추천하지 않는다.텍스트
빈 값(bottom value)은 재귀적 데이터 구조의 끝을 가리키거나 값이 없음을 뜻하는 특수한 값입니다. 프로그래밍 언어에서 빈 값은 nil, none, nothing, null과 같은 이름을 가집니다. …어떤 면에서 null과 undefined는 아주 비슷하다고 볼 수 있지만, 어떤 경우에는 서로 다르게 동작합니다. …비슷해 보이지만 이따금 서로 다르게 동작한다는 것은, 결국 헷갈릴 여지가 있다는 말입니다.
더글러스 크락포드 , 『자바스크립트는 왜 그 모양일까?』, 인사이트(2020), p123.
심벌은 사실 자바스크립트 언어를 확장하는 메커니즘입니다. ES6에서 for/of 루프와 이터러블 객체를 도입했을 때 클래스가 자기 자신을 이터러블로 만들 수 있는 표준 메서드를 정의해야 했습니다. 하지만 특정 문자열 이름을 이터레이터 메서드로 표준화하면 기존 코드가 깨지는 것을 피할 수 없었기에 심벌 이름을 도입한 것입니다.
데이비드 플래너건 , 『자바스크립트 완벽 가이드』, 인사이트(2022), p46.
let s = Symbol("sym");
s.toString() // "Symbol(sym)"
References
데이비드 플래너건 , 『자바스크립트 완벽 가이드』, 인사이트(2022)
더글러스 크락포드 , 『자바스크립트는 왜 그 모양일까?』, 인사이트(2020)
카일 심슨 , 『You Don’t Know JS - 타입과 문법, 스코프와 클로저』, 한빛미디어(2017)
이웅모 , 『모던 자바스크립트 Deep Dive』, 위키북스(2020)