자바스크립트에는 다음 5개의 기본 데이터 타입이 존재한다.
true
, false
null
undefined
7
, -2
, 3.8
Hello, world!
, JavaScript
null
과 undefined
모두 자바스크립트 상에서 값이 없음을 나타낸다.
기본적으로 값이 할당되지 않은 변수의 초기값은 undefined
이다. 데이터 타입으로는 undefined
를 갖는다.
var a;
console.log(a) // undefined
console.log(typeof a) // undefined
null
은 사용자가 부여한 '값이 없음'을 뜻하는 value이다. 데이터 타입으로는 object
를 갖는다.
var b;
console.log(b) // undefined
b = null;
console.log(b) // null
console.log(typeof b) // object
null
이 데이터 타입으로 객체를 갖는 이유 🤔?파이썬에서는 자바스크립트 상의 null
객체를 None
으로 표현했으며 데이터 타입 또한 NoneType
을 가졌다.
a = None
print(type(a)) # <class 'NoneType'>
하지만 자바스크립트의 null
은 데이터 타입으로 object
를 갖는다.
var a = null;
console.log(typeof a) // object
이유는 여기에서 확인 할 수 있었다.
요약하자면
1. typeof null이object
인 이유는 초기버전의 버그이다.
2. 그럼에도 고치지 않은 이유는 기존 코드가 손상될 수 있기 때문이다. (하위 호환 문제)
var a; // 선언만 한 상태, "undefined"가 저장됨
var b,c; // 한 번에 여러 변수 선언 가능
var d = 0; // 변수 선언과 함께 초기화
var e = 0, d = "js"; // 선언과 초기화 동시에 가능
globalVariable = "javascript"; // 선언되지 않은 변수는 전역변수가 됨
let a; // 선언만 한 상태, "undefined"가 저장됨
let b,c; // 한 번에 여러 변수 선언 가능
let d = 0; // 변수 선언과 함께 초기화
let e = 0, d = "js"; // 선언과 초기화 동시에 가능
let은 변수가 선언된 블록, 구문 또는 표현식 내에서만 유효한 변수를 선언한다.
const a; // SyntaxError: invalid syntax
const a = 7;
블록범위 상수를 선언한다. 상수의 값은 재할당 할 수 없으며 다시 선언할 수 없다. 처음 선언할때 반드시 초기화를 해야한다.