변수는 데이터를 담고 있는 보관함을 의미하고, 그 보관함의 크기는 동일하다.
또한, 변수는 상황에 따라 변할 수 있는 값이다.
- 기존에 배웠던 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