본문 바로가기

Language/JavaScript33

[JavaScript] spread 연산자와 Rest 기존 배열에 기반한 새로운 배열을 만들 때, 우리는 loop 과정이 필요합니다. const arr = [7, 8, 9]; const badNewArr = [1, 2, arr[0], arr[1], arr[2]]; console.log(badNewArr); 기존 배열에 1, 2 원소를 집어넣고 싶을 때 위와 같은 방법이 있으나 굉장히 귀찮은 일입니다. 이것을 해결하기 위해 spread 연산자가 있습니다. Spread 문법(Spread Syntax, ...)는 대상을 개별 요소로 분리한다. Spread 문법의 대상은 iterable 이어야 합니다 iterable이란 Symbol.iterator 메소드를 구현하거나 프로토타입 체인에 의해 상속한 객체를 말합니다. 즉, for...of 문으로 순회할 수 있는 객체.. 2021. 1. 12.
[JavaScript] Destructuring 디스트럭쳐링(Destructuring)은 구조화된 배열 또는 객체를 Destructuring(비구조화, 파괴)하여 개별적인 변수에 할당하는 것이다. 배열 또는 객체 리터럴에서 필요한 값만을 추출하여 변수에 할당하거나 반환할 때 유용합니다. 1. 배열 디스트럭처링(Array Destructuring) const arr = [2, 3, 4]; const [x, y, z] = arr; console.log(x, y, z); console.log(arr); 배열 디스트럭처링을 위해서는 할당 연산자 왼쪽에 배열 형태의 변수 리스트가 필요합니다. let x, y, z; [x, y, z] = [1, 2, 3]; let [x, y, z] = [1, 2, 3]; 왼쪽의 변수 리스트와 오른쪽의 배열은 배열의 인덱스를 기준.. 2021. 1. 12.
[JavaScript] 함수 호출 방식에 달라지는 this 자바스크립트의 함수는 호출될 때, 매개변수로 전달되는 인자값, Scope Chain 이외에, arguements 객체와 this를 암묵적으로 전달 받습니다. this 키워드는 static 하지 않고 함수를 호출하는 방식에 의해 결정되는 특징을 가지고 있습니다. this 키워드는 4가지 함수 호출 방식으로 달라지게 됩니다. 1. 메서드 방식 첫번째 함수 호출 방식으로는 객체 내부에서 호출되는 메서드가 있습니다. 위의 예시에서는 calcAge 함수는 jonas 안에 들어있는 메서드인데 여기서의 this는 jonas를 가르키게 됩니다. 2. Simple function call strict 모드에서의 단순 함수 호출은 undefined을 나타내고, 브라우저에서는 window 객체를 가르킵니다. console... 2021. 1. 12.
[JavaScript] 호이스팅(Hoisting) Hoisting 호이스팅(Hoisting)이란, var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 변수의 몇 개의 타입들이 선언문이 나오기 전에, 사용할 수 있는 특성을 말합니다. 실행이 시작하기 전에, 코드는 변수 선언문들을 scan하고 코드에서 찾은 변수에 대해, 변수 환경 object에 새로운 속성이 생성됩니다. 함수 선언은 변수 환경 객체에 저장되기 때문에 실제로 코드에서 선언되기 전에 사용할 수 있습니다. var 키워드도 마찬가지로 호이스팅이 가능한데 선언된 값을 얻지 못하지만 undefined로 정의 됩니다. 하지만 var 키워드로 선언된 변수와는 달리 let과 const 키워드로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError)가 발생.. 2021. 1. 12.