클린코드 자바스크립트 2-1 타입 다루기(타입 검사)
Clean Code JS 강좌는 여러 절로 구성되어 있습니다.
- 클린코드 자바스크립트 1-1 변수 다루기(let & const 사용, function scope & block scope)
- 클린코드 자바스크립트 1-2 변수 다루기(전역 공간 사용 최소화,임시 변수 제거하기)
- 클린코드 자바스크립트 1-3 변수 다루기(호이스팅)
- 클린코드 자바스크립트 2-1 타입 다루기(타입 검사)
- 클린코드 자바스크립트 2-2 타입 다루기(undefined & null, eqeq 줄이기)
- 클린코드 자바스크립트 2-3 타입 다루기(형변환 주의하기, isNaN)
- 클린코드 자바스크립트 3-1 경계 다루기(min-max,begin-end,first-last,접두사와 접미사, 매개변수 순서가 경계)
- 클린코드 자바스크립트 4-1 분기 다루기(값식문, 삼항 연산자)
- 클린코드 자바스크립트 4-2 분기 다루기(truthy & falsy, 단락 회로 평가)
- 클린코드 자바스크립트 4-3 분기 다루기(else if & else 피하기, Early Return, Default case 고려하기)
- 클린코드 자바스크립트 4-4 분기 다루기(Default case 고려하기, Nullish coalescing operator, 드모르간 법칙)
- 클린코드 자바스크립트 5-1 배열 다루기(JS의 배열은 객체다, Array.length, 배열 요소에 접근하기)
- 클린코드 자바스크립트 5-2 배열 다루기(유사 배열 객체, 불변성, for문 배열 고차 함수로 리팩토링)
- 클린코드 자바스크립트 5-3 배열 다루기(배열 메소드 체이닝 활용, map vs forEach, continue&break)
- 클린코드 자바스크립트 6-1 객체 다루기(Object Destructuring, Object.freeze)
- 클린코드 자바스크립트 6-2 객체 다루기(Prototype 조작 지양하기, hasOwnProperty, 직접 접근 지양하기)
- 클린코드 자바스크립트 7-1 함수 다루기([함수,메서드,생성자], argument & parameter,복잡한 인자 관리하기)
- 클린코드 자바스크립트 7-2 함수 다루기(default value, Rest Parameters, void & return, 화살표 함수)
- 클린코드 자바스크립트 7-3 함수 다루기(Callback Function, 순수 함수, Closure)
타입 다루기 😎
타입 검사👍
- PRIMITIVE vs REFERENCE
- Recference 는 객체 (Array, function, Date …)
- typeof 로 감별해내기 어렵다.
function myFunction() {}
class MyClass {}
const str = new String("문자열");
typeof "문자열"; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof 123; // 'number'
typeof Symbol(); // 'symbol'
typeof myFunction; // 'function'
typeof MyClass; // 'function
typeof str; // 'undefined'
가장 치명적인 문제 😥
자바 스크립트가 인정한 오류
typeof null; // 'object'
- 자바스크립트는 동적으로 변하는 언어 ▻ 타입 동적
- 객체의 프로토타입 체인을 확인하는 법 (객체 확인에 용이)
function Person(name, age) {
this.name = name;
this.age = age;
}
const p = {
name: "test",
age: 85,
};
const poco = new Person("poco", 99);
poco instanceof Person; // true
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
// 최상위에 Object 가 있으므로 true
arr instanceof Object; // true
func instanceof Object; // true
date instanceof Object; // true
Object.prototype.toString.call(arr); // '[object Array]'
Object.prototype.toString.call(func); // '[object Function]'
Object.prototype.toString.call(date); // '[object Date]'
- 자바스크립트는 동적인 타입을 가진 언어이다.
- 타입 검사가 어려움 하나하나 잘 찾아가면서 검사 해야한다.
- 어떠한 부분이 주의해야할지 외우는게 아닌 하나하나 잘 찾아서 검사해야한다!
- Primitive vs Reference / typeof instanceof 등
Solution 🌼
아래와 같은 내용으로 Stack Overflow , Google 최신 검색해보며 타입 검사
- javascript is function
- javascript is Array
- javascript is String
}