오늘은 타입 다루기에 대한 강의를 들었는데,
그동안 잘못 사용하고 있었던 경우가 꽤 많았다.
(굳이 따지면 잘못은 아니지만 clean하지 못한,,,)
특히 ==
를 예시들어주신 것 처럼 야매로 사용하곤 했다.
그리고 null과 undefined의 차이를 정확히 알게 되었다.
마지막으로 형변환 할 때 명시적으로 해주기! 잊지 말아야지,,,
typeof(피연산자)
→ 타입을 리턴해줌typeof null
→ object로 나옴. ⇒ 언어적 오류임.객체 instanceof 클래스
→ boolean으로 리턴 function Person(name,age){
this.name = name;
this.age = age;
}
const poco = new Person('poco',99);
poco instanceof Person //true
const p = {
name : 'poco',
age:99
}
p instanceof Person //false
const arr = [];
const func = function () {};
const date = new Date();
arr instanceof Array; //true
func instanceof Function; //true
date instanceof Date; //true
arr instanceof Object; //true
func instanceof Object; //true
date instanceof Object; //true
Object.prototype.toString.call("hello"); // [object String]
Object.prototype.toString.call(arr); // [object Array]
Object.prototype.toString.call(func); // [object Function]
Object.prototype.toString.call(date); // [object Date]
💡 구글링 팁
javascript is
타입 와 같은 형식으로 검색한 뒤 다양한 글 보기
특히 스오플에서 좋아요와 날짜 확인하기‼️
→ 자바스크립트는 믿을만한 언어가 아니다.... 의심하기
// 선언했지만 값은 정의되지 않고 할당되지 않음
let varb;
typeof varb; //undefined
//수학 연산시에는 NaN으로 표현됨
undefined + 10 //NaN
!undefined //true
undefined == null //true
undefined === null //false
!undefined == !null //true
!
→ 값을 뒤집음 !!
→ 값을 boolean으로 형변환 시도 !null //true
!!null //false
null === false //false
!null === true // true
//수학 연산에서는 0으로 표현됨.
null+12 //12
eqeq란?
==
를 뜻함.===
'1' ==1 //true
1 == true // true
ticketNum.value == 0 //true, 사용하지말기
Number(tickeyNum.value) === 0 //true, 정석인 방법으로 사용하기
11 + '문자' //'11문자'
!!'문자' //true
!!'' // false
//=> 모두 암묵적으로 형변환이 일어남
//parseInt('문자열',진수) -> 10진수가 default가 아니므로 몇진수인지 꼭 넣어주기
parseInt('9.9999',10) //9
String(11 + '문자') //'11문자'
Boolean('word') //true
Boolean('') //flase
Number('11') //11
// => 명시적으로 형변환 해주기!
isNaN
isNan(value)
→ 느슨한 검사 - 자동으로 숫자로 형변환됨Number.isNaN(value)
→ 엄격한 검사(강제로 형변환하지 않음)console.log(isNaN(123 + "test")); //true
console.log(Number.isNaN(123 + "test")); //false