typeOf
primitive와 reference의 차이
- 자바스크립트는 동적인 타입임으로 타입 검사가 어렵다. 잘 찾아서 검사를 하자.
primitive
console.log(typeof '문자열') //string
console.log(typeof true) //boolean
console.log(typeof 123) //number
console.log(typeof Symbol()) //symbol
- typeOf로 잘 검사가 됨.
reference
function myFun() {}
class MyClass{}
const str = new String('문자열')
console.log(typeof(myFun)) //function
console.log(typeof(MyClass)) //function
console.log(typeof(str)) //object
- typeOf로 잘 잡아내기 어려움.
예외 null
console.log(typeOf(null)) // object
instanceOf
primitive
function Person(name, age) {
this.name = name;
this.age = age;
};
const P = {
name : 'poco',
age : 10.
}
const poco = new Person('poco',10);
console.log(poco instanceof Person) //true
console.log(P instanceof Person) //false
reference
const arr = [];
const func = fucnction() {};
const date = new Date();
arr instanceOf Array // true
func instanceOf Function // true
date instanceOF Date // true
- 하지만 reference의 최상단은 모두 객체임으로 객체일때 다 true이다.
해결방안arr instanceOf Object // true func instanceOf Object // true date instanceOF Object// true
Object.prototype.toString.call('문자열') // '[object String]'
Object.prototype.toString.call(arr)// '[object Array]'
Object.prototype.toString.call(date)// '[object Date]'
Object.prototype.toString.call(func)// '[object Function]'
검색 방법
javascript is array
isNaN
- isNaN 느슨한 검사, 숫자가 아니다 (true)/ 숫자가 숫자가 아니다 => 숫자다. (false)
- Number.isNaN 엄격한 검사
isNaN(123) // false
isNaN(123 + '문자열') // true
Number.isNaN(123) // true
Number.isNaN(123 + '문자열') // false
이 글은 https://www.udemy.com/course/clean-code-js 클린코드 강의를 보고 작성한 글입니다.
'개발언어 > javascript' 카테고리의 다른 글
변수명 이름 표기법 (0) | 2023.01.02 |
---|---|
[CleanCode] 삼항연산자를 어떻게 다룰까? (0) | 2022.12.10 |
[CleanCode] else을 왜 지양할까? (0) | 2022.12.10 |
이중 for문 흐름 이해하기 (0) | 2022.12.10 |
댓글