클린코드 자바스크립트 1-1 변수 다루기(let & const 사용, function scope & block scope)
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)
변수 다루기 😎
var를 지양하자. 👍
- let & const 사용
var : 함수 스코프 let & const : 블록 단위 스코프 + Temporary Dead Zone
- var는 변수 선언 및 할당 재사용 가능
var name = "이름";
console.log(name);
var name = "이름2";
console.log(name);
- 호이스팅으로 인해, 변수 선언이 먼저 가기 때문에 아래와 같이 undefined가 나온다.
console.log(name2); // undefined
var name2 = "hello";
console.log(name2);
- let (변수 선언 및 재할당 가능)
let name = "이름";
name = "이름2";
- const (변수 선언시 할당해주어야 한다)
const name = "이름;
function scope & block scope 👍
- var는 Function 단위이므로 지역에서 할당한 변수가 전역까지 오염된다.
var global = "전역"
if (global ==="전역) {
var global = '지역'
console.log(global); // 지역
}
console.log(global) // 지역
- let는 block 단위이므로 전역에 오염되지 않는다.
let global = "전역"
if (global ==="전역) {
var global = '지역'
console.log(global); // 지역
}
console.log(global) // 전역
- let보다 const를 사용하는 것이 좋다.
- const는 재할당 불가만 기억하면 된다.
객체 조작은 문제 없음
const person = {
name : "john",
age : 27,
}
// Error 발생(재할당 불가)
// person = {
// name : "john2",
// age : 30,
person.name = "john2";
person.age = 30;
}
배열 조작시에도 문제 없음
const numList = [1, 2, 3, 4, 5];
numList.push(1);