JavaScript Koans

ROCKBELL·2022년 11월 9일
0

자바스크립트

목록 보기
24/25

** 헷갈렸던 부분 위주로 간략하게 정리

01_Introduction.js

변수는 무조건 변수 호이스팅이 일어난다
변수의 초기화값으로 undefined가 할당된다

let, constTDZ 라는 곳에 머물게 되어 이 시점에 참조하게 되면 에러가 발생,
var 키워드만 호이스팅이 일어나는 것처럼 보인다


02_Types-part1.js

  • 문자열(숫자) + 숫자 -> 문자열
  • 숫자 + 문자열(숫자) -> 숫자

Number 타입과 String 타입 + 연산시 차이점 확인


03_LetConst.js


04_Scope.js

렉시컬환경 개념 다시 복습


05_ArrowFunction.js

클로저의 특징

  • 함수가 함수를 리턴
  • 리턴된 함수가 외부 함수의 변수를 사용
  • 변수를 안전하게 보호(은닉)하여 외부에서 조작불가능하게 함
const increase = function() {
	let num = 0;
    return function() {
    	return ++num;
    }
}
const countUp = inrease(); // 함수 반환
countUp(); // 함수 호출 
  • 리턴된 익명의 함수를 호출하기 위해서는 변수에 할당한 후 호출해 줘야한다

06_Types-part2.js

원지자료형 데이터의 함수 인자로 전달
변수명과 파라미터명이 같은 걸 혼동하지 않기


07_Array.js


08_Object.js

String.prototype.repeat(n)
n번의 숫자만큼 문자열 반복 하여 새로운 문자열 반환


Object.assign(target, source)
target 객체의 soure(속성 값이 존재하는 객체)를 하나로 합쳐 target 객체로 반환

target 에 {} 을 넣으면 새로운 객체로 복사하는 형태가 됨 (그렇다고 완전한 복사를 의미하는 것은 아님 - 얕은 복사)


깊은 복사 vs 얕은 복사

중첩된 배열이나 객체를 복사 하는데 있어서 깊은 복사를 하지 않으면 중첩된 요소에 접근하기 힘들다

깊은 복사 방법으로는

  • 재귀함수
  • JSON.stringfy() / JSON.parse()
  • lodash, ramda 등의 라이브러리

09_SpreadSyntax.js

agruments
함수 arguments 는 유사 배열 객체(array-like object) 형태로 반환 (typeof object)


Object.keys()
객체의 key 값을 문자열 배열로 반환


Array.from()
유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 배열 객체를 반환


...rest paramter 반환 값
배열 형태로 반환하며, 값이 없을 경우 빈 객체 []를 반환
객체에서의 ...rest 의 빈값은 빈 객체 {} 를 반환


10_Destructuring.js

profile
luv it

0개의 댓글