우선적으로, 자바스크립트에서 null 과 아예 없는 것은 조금 다르다고 한다.
이런 이유로 브라우저 마다 체크 결과가 다르기도 했었다. (브라우저 개발사마다 이해를 다르게 한 까닭에...)
null 은 값이 없는 상태,
undefined 는 변수는 선언했으나 값을 할당하지 않은 상태.
예를 들어, 변수가 생성된 이후에, null 값을 대입할 수 있지만 undefined 를 대입할 수는 없다.
if (typeof a == "undefined")
if (a == undefined)
if (a == null)
대체적으로는 ( a === undefined ) 와 (typeof a == "undefined") 는 같은 의미로 생각된다.
(주의 : 그러나 현대에 들어서는 조금 다른 의미로 생각한다.)
(x === undefined)
: 변수 (객체)가 선언 되었으나, 값이 설정되지 않은 경우. (x의 값이 'undefined' 라는 의미)
(typeof x === undefined)
: 변수 자체도 선언도 안 된 상태. (x 의 형태(type) 조차도 'undefined' 라는 의미)
== == 와 === 의 차이 ==
: === 는 타입까지 동일한지 비교한다. (값도 동일 + 타입도 동일)
예시 1)
* "123.2" == 123.2 : true
* "123.2" === 123.2 : false
예시 2)
* undefined == null : true
* undefined === null : false
조금 쉽게 설명하자면, 자바스크립트에서는 == 를 '유연한 비교' 라고 생각하면 된다. === 는 다른 언어에서 쓰이는 다소 '빡빡한 equal 비교' 라고 생각하면 된다.
typeof 종류
* undefined
* object
* boolean
* number
* string
* function
* symbol
'개발 > Javascript, ECMAScript' 카테고리의 다른 글
[babel] Module not found: Error: Can't resolve 'core-js/modules/es6.string.repeat' (0) | 2019.12.19 |
---|---|
[ECMA Script] ES6 의 Arrow Functions 에 대해서 (0) | 2019.03.01 |
[Node.js] Node.js 설치 스샷 (윈도우 환경) (0) | 2019.02.21 |
encodeURI (0) | 2019.02.21 |
[제이쿼리 jquery] jquery Ajax 이후에 Popup 해야 하는 경우 (0) | 2015.10.15 |
JSON 타입을 문자열로 변환 (0) | 2015.10.03 |
[jquery] closest (0) | 2015.10.02 |
[자바스크립트 Javascript] 금액의 세자리 마다 , 추가하는 함수 (0) | 2015.05.10 |