연산을 처리할 때에는 값의 "타입"이 중요하다.
console.log(10+5);
console.log('10' + '5');
아래에서는 자바스크립트가 제공하는 기본 8가지의 타입을 확인한다.
const v1 = 12;
const v2 = 123456124151231231515n;
const v3 = 'ab';
const v4 = true
const v5 = {}
const v6 = Symbol('abc');
const v7 = undefined;
const v8 = null;
console.log(typeof v1)
기본 타입 외에 object로부터 파생되어진 function타입도 존재한다.
function f1 {}
console.log(typeof f1);
class MyClass{}
console.log(typeof MyClass);
typeof로는 null을 구분하기 힘드나, object의 toString이라는 함수를 통해서 확인할 수 있다.
console.log(Object.prototype.toString.call(null));
console.log(typeof []);
console.log(Object.prototype.toString.call([]));
symbol은 "유일한" 속성 이름을 만들 때 사용한다.
const idSymbol = Symbol('id');
const obj = { id: 123 };
obj[idSymbol] = 456;
console.log(obj);
const arr = [];
console.log(arr[Symbol.iterator]);
타입 변환을 위한 함수를 사용 할 수 있다.
const v1 = String(123);
const v2 = String(new Date());
console.log(typeof v1, v1);
console.log(typeof v2, v2);
const v3 = Number('123');
const v4 = BigInt('123');
console.log(typeof v3, v3);
console.log(typeof v4, v4);
const v1 = Boolean(123);
const v2 = Boolean(0);
console.log(typeof v1, v1);
console.log(typeof v2, v2);
const v3 = Boolean('abc');
const v4 = Boolean('');
console.log(typeof v3, v3);
console.log(typeof v4, v4);
const v11 = !!123;
const v12 = !!0;
const v13 = !!'abc';
const v14 = !!'';
console.log(typeof v11, v11);
console.log(typeof v12, v12);
console.log(typeof v13, v13);
console.log(typeof v14, v14);
new 키워드를 사용하면 새로운 object로써 만들어진다
console.log(typeof new Boolean(true));
console.log(typeof new Number(1));
console.log(typeof new String('abc'));
const s1 = new String('abc');
s1.id = 123;
console.log('value:', s1.valueOf());
console.log('id:', s1.id);
자바스크립트에서 값이 같은지에 대해서 비교하기
console.log(123 === 123);
console.log('123' === '123');
console.log('123' === 123);
console.log(0 === false);
console.log(123 === true);
console.log(123 == 123);
console.log('123' == '123');
console.log('123' == 123);
console.log(0 == false);
console.log(123 == true);