typeof variable
typeof (variable)
- 원시 타입이 할당될 때는 변수에 값(value) 자체가 담긴다.(메모리 참조가 아닌 값의 복사)
- 메모리상에 고정된 크기로 저장되며 원시 데이터 값 자체를 보관하므로 불변적이다.
모든 숫자를 실수로 처리
let num_1 = 99;
let num_2 = -99;
console.log(typeof num_1); //Number
console.log(typeof num_2); //Number
UTF-16으로 구성된 문자열
let str_1 = 'Hi'; //Hi
let str_2 = "Hi"; //Hi
let str_3 = `Hi, Hello 안녕? 내가 누군지
아니? `; // 'Hi, Hello 안녕?\t\t내가 \t\t누군지\n\n\n\n\n\t\t\t아니? '
console.log(typeof str_1); //string
console.log(typeof str_2); //string
console.log(typeof str_3); //string
true, false
let bool_1 = true;
let bool_2 = 2>3;
console.log(typeof bool_1); //boolean
console.log(typeof bool_2); //boolean
변수를 선언만 하고 값을 할당하지 않았을 때 들어가는 값
let maBoyFriend;
console.log(yrBoyFriend); //undefined
console.log(typeof yrBoyFriend); //undefined
의도적으로 '값이 없음'을 명시하기 위해 할당하는 값
let nu = null;
console.log(typeof nu); //object
console.log(nu === null); //true
변경 불가능한 유일한 값을 생성할 때 사용, 값 자체의 확인이 불가하여 외부로 노출되지 않음.
let sym_1 = Symbol('key');
console.log(typeof sym_1); //Symbol
let sym_1 = Symbol('key');
let sym_2 = Symbol('key');
console.log(sym_1 === sym_2); // flase
let sym_3 = Symbol('hi');
console.log(sym_3); // Symbol(hi)
sym.description; // 'hi'
sym.description = 'hi hi hi';
console.log(sym_3); // Symbol(hi)
5 + 'abc' //'5abc'
let sym_4 = Symbol('hi')
sym_4 + 'abc' // Uncaught TypeError: Cannot convert a Symbol value to a string
- 원시타입이 아닌 모든 것
- 참조타입은 원시타입 데이터의 집합이다.
- 참조 타입은 고정된 크기의 보관함이 아니다.
- 참조 타입을 변수에 할당할 때는 값이 아닌 데이터의 주소를 저장한다.
let obj = {};
console.log(typeof obj); //object
배열은 'object'의 특수한 한 형태이기 때문에 typeof만으로는 객체가 배열인지 확인할 수 없음
객체가 배열인지 확인하기 위해서는 'isArray()' 함수를 사용해야 함
let arr = [1,2,3,4];
console.log(typeof arr); //object
console.log(Array.isArray(arr)); //true
console.log(Array.isArray({})); //false
let func = function(){};
console.log(typeof func); //function
https://velog.io/@jakeseo_me/2019-04-01-1904-%EC%9E%91%EC%84%B1%EB%90%A8-2bjty7tuuf
https://hianna.tistory.com/402 [Javascript] 배열인지 확인하기 - isArray()