자바스크립트의 데이터 타입은 한 가지의 심플한 데이터를 담을 수 있는 원시타입과 조금 더 복잡한 데이터를 담을 수 있는 오브젝트 타입으로 나뉜다.
원시타입은 string, number, boolean, bigint(숫자타입과 비슷하지만 더 큰 숫자 범위 할당 가능), symbol, null, undefined 총 7가지가 있고, 그 외는 Obeject 타입에 속한다. (function, array...)
false: 0, -0, '', null, undefined, NaN
true: -1, 'hello', []... (빈 배열은 object이기 때문에 무언가 데이터가 있다면 다 true)
let criminal;
console.log(criminal); // undefined
let
: 바뀔수 있는 값, 한번 값을 선언하고 나서 바꿀 수 있음
let value = 1;
console.log(value); // 1
value = 2;
console.log(value); // 2
한번 선언했으면 똑같은 이름으로 선언 불가
let value = 1;
let value = 2; // 오류 발생
단, 다른 블록 범위에서는 사용 가능
const
: 한번 선언하고 값이 바뀌지 않는 값, 변수와 마찬가지로 같은 이름 선언 불가
const a = 1;
a = 2; // "Error: "a" is read-only"
const a = 2; // "a" has already been declared
var
똑같은 이름으로 여러번 선언 가능 but, 모던 자바스크립트에서는 더이상 사용 X
두 값을 비교 할 때 사용
const a = 1;
const b = 1;
const equals = a === b;
console.log(equals);
= 문자가 3개 있을 때와 2개 있을 떄의 차이점은 2개 있을때에는 타입 검사를 하지 않는다는 것
const a = 1;
const b = '1';
const equals = a == b;
console.log(equals);
숫자 1과 문자 '1' 동일한 값으로 간주
== 대신 === 를 사용 권장
두 값이 일치하지 않는지 확인 할 때에는 !==
를 사용
!= 사용 시 타입 검사 X
const a = 10;
if (a === 5) {
console.log('5입니다!');
} else if (a === 10) {
console.log('10입니다!');
} else {
console.log('5도 아니고 10도 아닙니다.');
}
// 10입니다!
// a = 5 -> "5입니다!"
// a = 7 -> "5도 아니고 10도 아닙니다."
특정 값이 무엇이냐에 따라 다른 작업을 하고 싶을 때 사용
const device = 'iphone';
switch (device) {
case 'iphone':
console.log('아이폰!');
break;
case 'ipad':
console.log('아이패드!');
break;
case 'galaxy note':
console.log('갤럭시 노트!');
break;
default:
console.log('모르겠네요..');
}
// device 값에 따라서 다른 결과가 출력
각 case 에서 실행할 코드를 작성하고 맨 마지막에 break;
break 를 하지 않으면 그 다음 case 의 코드까지 실행하기 때문!
default: 는 device 값이 우리가 case 로 준비하지 않은 값일 경우