변수는 무조건 변수 호이스팅이 일어난다
변수의 초기화값으로 undefined
가 할당된다
let
, const
는 TDZ
라는 곳에 머물게 되어 이 시점에 참조하게 되면 에러가 발생,
var
키워드만 호이스팅이 일어나는 것처럼 보인다
Number 타입과 String 타입 +
연산시 차이점 확인
렉시컬환경 개념 다시 복습
const increase = function() {
let num = 0;
return function() {
return ++num;
}
}
const countUp = inrease(); // 함수 반환
countUp(); // 함수 호출
원지자료형 데이터의 함수 인자로 전달
변수명과 파라미터명이 같은 걸 혼동하지 않기
String.prototype.repeat(n)
n번의 숫자만큼 문자열 반복 하여 새로운 문자열 반환
Object.assign(target, source)
target 객체의 soure(속성 값이 존재하는 객체)를 하나로 합쳐 target 객체로 반환
target 에 {}
을 넣으면 새로운 객체로 복사하는 형태가 됨 (그렇다고 완전한 복사를 의미하는 것은 아님 - 얕은 복사)
중첩된 배열이나 객체를 복사 하는데 있어서 깊은 복사를 하지 않으면 중첩된 요소에 접근하기 힘들다
깊은 복사 방법으로는
agruments
함수 arguments 는 유사 배열 객체(array-like object) 형태로 반환 (typeof object
)
Object.keys()
객체의 key 값을 문자열
배열로 반환
Array.from()
유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 배열 객체를 반환
...rest
paramter 반환 값
배열 형태로 반환하며, 값이 없을 경우 빈 객체 []
를 반환
객체에서의 ...rest 의 빈값은 빈 객체 {}
를 반환