클린코드 자바스크립트 7-1 함수 다루기([함수,메서드,생성자], argument & parameter,복잡한 인자 관리하기)
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)
함수 다루기 😎
함수, 메서드, 생성자👍
1급 객체
- 변수나, 데이터에 담길 수 있다.
- 매개변수로 전달 가능 (콜백 함수)
- 함수가 함수를 반환 (고차 함수)
function func() {
return this;
}
// 객체 메서드
const obj = {
conciseMethod() {
return this;
},
};
// 생성자 함수 (Class)
function Func() {
return this;
}
// 전역을 바라본다
func();
// 메서드 => 객체에 의존성이 있는 함수, OOP 행동을 의미
obj.method();
//생성자 함수 => 인스턴스를 생성하는 역할 => Class
const instance = new Func();
argument & parameter👍
- Parameter (Formal Parameter) : 형식을 갖춘, 매개변수
- Arguments (Actual Parameter) : 실제로 사용되는, 인자
function axios(url) {
// Parameter
// some code...
}
axios("https://github.com"); //Arguments
복잡한 인자 관리하기👍
- 무조건 3개 이상이 나쁜게 아니다.
- 맥락을 파악할 수 있으면 된다.
function toggleDisplay(isToggle) {
// ..some code
}
function sum(sum1, sum2) {
// ..some code
}
sum(1, 2);
function getRandomNumber(min, max) {
// ..some code
}
function timer(start, stop, end) {
// ..some code
}
function getSquare(top, right, bottom, left) {
// ..some code
}
function createCar1(name, brand, color, type) {
return {
name,
brand,
color,
type,
};
}
// 객체 이용
function createCar2(options) {
var name = options.name;
var brand = options.brand;
var color = options.color;
var type = options.type;
return {
name: name,
brand: brand,
color: color,
type: type,
};
}
// 객체 구조 분해 할당
function createCar3({ name, brand, type, color }) {
return {
name,
brand,
color,
type,
};
}
function createCar4(name, { brand, type, color }) {
return {
name,
brand,
color,
type,
};
}
createCar4("차량 이름", {
/*...somecode*/
});
- 에러를 띄어주는 인자관리방법
function createCar({ name, brand, type, color }) {
if (!name) {
throw new Error("name is a required");
}
if (!brand) {
throw new Error("brand is a required");
}
}