티스토리 뷰
자바스크립트는 데이터타입(자료형)에 대해 상당히 관대한 언어이다.
다른 언어가 변수를 선언 할 때 자료형까지 결정 하는 반면,
자바스크립트는 선언시 변수의 스코프(범위)와 존재만 설정하고,
할당 할 때 비로소 자료형이 결정된다.
(다른 언어를 했었는지 어떤 개발자가 변수를 선언하고 초기화를 하지 않으면
쓰레기 값이 된다고 하는 것을 보았는데, 자바스크립트에 대해 잘 모르고서 하는 소리인것 같다.)
그래서인지, 자바스크립트를 배우는 대부분의 사람들은, 그리고 가르치는 사람들은
자료형에 대한 고민을 거의 하지 않는 편이다.
고려하지 않아도
프로그래밍을 하는데 큰 문제가 없다(?)고 생각하는 것이다.
하지만 조금만 깊이있게 들어가면 자바스크립트도, 자료형에 대한 고민을 하지 않고서는
문제가 발생하는 경우가 많다.
그 예가 바로 undefined와 null이다.
많은 사람들이 이 두가지를 구분하지 못해서 어려움을 겪는 경우가 있는데,
이 둘은 다음과 같은 차이가 있다.
undefined -> 변수를 선언만 하고 값을 할당하지 않음.
즉, 자료형이 결정되지 않은 상태이다.
(선언하지 않은 변수도 콘솔이나 기타 메세지에는 undefined라고 뜨지만,
undefined라는 값을 가지는 것은 아니다.)
null -> 변수를 선언하고, 'null'이라는 빈 값을 할당한 경우이다.
(이 '빈 값'의 경우 자료형에 따라 여러가지가 있지만,
null은 객체형 데이터-ex: array, object-의 빈 값을 의미한다.
문자열(string)의 경우 '', 숫자(number)의 경우 0이 빈값이고,
이들 빈값 모두는 if문에서 false로 형 변환된다.)
다시말해서, undefined는 자료형이 결정되지 않은 변수이고,
null은 자료형은 객체인데, 비어있는 변수이다.
++추가
-------------
이 글을 본 지인이 왜 그러면 console.log(undefined==null)이 true냐고 반박을 해서
글을 추가합니다.
비교연산자 ==는 자료형이 다르면 자동 형변환으로 자료형을 강제로 맞춰서 비교하는 비교연산자입니다.
undefined와 null(object)은 자료형이 다르니 자바스크립트 엔진에서 알아서 통일해서 둘다 값이 없는거니까
true를 반환합니다. 이 경우 === 연산자(자료형까지 비교)를 사용하면 원하는 결과를 얻을 수 있습니다.
출처 : http://enarastudent.tistory.com/entry/null%EA%B3%BC-undefined%EC%9D%98-%EC%B0%A8%EC%9D%B4
'Java Script & HTML' 카테고리의 다른 글
jquery checkbox 제어 (0) | 2015.01.02 |
---|---|
정규표현식 모음 (0) | 2014.12.24 |
radio button 체크된 값 가져오기 (0) | 2014.12.12 |
TEXTAREA 줄바꿈 저장 (2) | 2014.12.12 |
javascript 페이지이동 (0) | 2014.10.13 |
- Total
- Today
- Yesterday
- javascript
- TEST
- java
- go-core
- 정규표현식
- Design Pattern
- mariadb
- OOP
- EffectiveJava
- Spring
- JPA
- programming
- Git
- clean code
- generics
- DesignPattern
- backend개발환경
- spring cloud
- frontend개발환경
- toby
- Kotlin
- code
- servlet
- db
- http
- MySQL
- frontcode
- Jackson
- java8
- JavaScript Core
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |