검색결과 리스트
글
자바스크립트는 데이터타입(자료형)에 대해 상당히 관대한 언어이다.
다른 언어가 변수를 선언 할 때 자료형까지 결정 하는 반면,
자바스크립트는 선언시 변수의 스코프(범위)와 존재만 설정하고,
할당 할 때 비로소 자료형이 결정된다.
(다른 언어를 했었는지 어떤 개발자가 변수를 선언하고 초기화를 하지 않으면
쓰레기 값이 된다고 하는 것을 보았는데, 자바스크립트에 대해 잘 모르고서 하는 소리인것 같다.)
그래서인지, 자바스크립트를 배우는 대부분의 사람들은, 그리고 가르치는 사람들은
자료형에 대한 고민을 거의 하지 않는 편이다.
고려하지 않아도
프로그래밍을 하는데 큰 문제가 없다(?)고 생각하는 것이다.
하지만 조금만 깊이있게 들어가면 자바스크립트도, 자료형에 대한 고민을 하지 않고서는
문제가 발생하는 경우가 많다.
그 예가 바로 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를 반환합니다. 이 경우 === 연산자(자료형까지 비교)를 사용하면 원하는 결과를 얻을 수 있습니다.
'JavaScript 이야기' 카테고리의 다른 글
자바스크립트로 이미지 새로고침 하기 (0) | 2013.01.05 |
---|---|
자바스크립트 객체 생성과 리터럴 표기법 (0) | 2012.12.17 |
자바스크립트 키코드 (0) | 2012.12.14 |
자바스크립트에서 false를 의미하는 것, 그리고 true를 의미하는것. (0) | 2012.11.17 |
자바스크립트에서 변수 타입에 관한 몇가지 알짜상식 (0) | 2012.11.17 |
RECENT COMMENT