
변수는 데이터를 담고 있는 보관함을 의미하고, 그 보관함의 크기는 동일하다.
또한, 변수는 상황에 따라 변할 수 있는 값이다.
- 기존에 배웠던 java나 c++과 달리 JavaScript는 동적 타입 언어로 분류되기 때문에 변수를 선언할 때 데이터타입을 따로 선언하지 않아도 된다는 것이 장점인 것 같다.
let 키워드재할당이 필요한 변수에 사용.
const 키워드재할당이 불필요하거나 변경되는 것을 방지해야 한는 변수에 사용.
var 키워드
let, const가 등장하기 이전에 사용되던 변수 선언 키워드. 여러 단점이 존재하므로 var 사용을 지양해야 한다.
number, string, boolean, undefined, 배열, 객체, 함수 등
<typeof 연산자>
- 특정 값의 타입을 확인하고 싶을 때 사용함.
- 연산 결과를 문자열로 반환함. (조건문에서 자주 사용되므로 주의할 것!)
✍ 사용법
typeof 값
변수는 선언되었지만, 값이 아직 할당되지 않은 상태.
let gang;
console.log(gang) //undefined
값이긴 하지만, 아무 의미도 없는(비어있는) 값.
let gang = null;
console.log(gang) // null
❗ typeof(null)의 결과는? (JavaScript 내의 버그)
typeof null //'object'
undefined는 값이 아직 할당되지 않은 상태이고,
null은 값이 할당되어 있지만, 그 값이 비어있음을 의미한다.
Not A Number (숫자가 아님)
<NaN을 반환하는 경우>
숫자로 읽을 수 없을 때
parseInt("고영희"), Number(undefined)
수식의 결과가 허수일 때
Math.sqrt(-1)
피연산자가 NaN일 때
7 * NaN
정의할 수 없는 계산식일 때
0 * infinity
문자열을 포함하면서 덧셈이 아닌 계산식일 때
"갱"/6
<NaN 판별>
NaN은 다른 모든 값과 비교(==, !=, ===, !==)했을 때 같지 않으며,
다른 NaN과도 같지 않다.
isNaN()
현재 값이 NaN이거나, 숫자로 변환했을 때 NaN이 되면 true를 반환함.
값이 Number 형태가 아니면 숫자로 형 변환 후 판별함.
Number.isNaN()
Number 타입이고, 현재 값이 NaN이어야만 true를 반환함.
isNaN('Hello world'); //true
Number.isNaN('Hello world'); //false
NaN === NaN //false