javascript9 [ES5] 호이스팅 함수 호이스팅 호이스터라는 기계는 밑에서 위로 어떤 물건들을 끌어 올리는 역할을 한다. JS에서 호이스팅이란 var 선언문이나 function 선언문 등 모든 선언문이 해당 Scope의 선두로 끌어 올리고 동작하는 특성을 말한다. 자바스크립트는 모든 선언문(var, let, const, function, function*, class)이 선언되기 이전에 참조 가능하다. 아래의 코드를 보자. var res = square(5); function square(number) { return number * number; } 함수 선언문으로 함수 square가 정의되기 이전에 함수 호출이 가능하다. 함수 선언문의 경우, 함수 선언의 위치와는 상관없이 코드 내 어느 곳에서든지 호출이 가능한데 이것을 함수 호이스팅.. 2020. 3. 27. [ES5] 불변성 # Immutability 불변성  영화 엑스맨에는 돌연변이들이 나온다. 이 돌연변이를 영어로는 `mutation`이라고 부른다. `mutation`은 변화라는 의미를 가지고있다. 'mutable'은 변할 수 있다는 의미를 가지고 있다. mutablility에 부정을 뜻하는 접미사'im' 가 붙었으니 변할 수 없다는 뜻이 된다. 따라서 'immutable object'은 변할 수 없는 객체를 뜻한다. ## immutable object 함수형 프로그래밍에서 중요한 개념이다. 객체가 참조를 통해서 여러 곳에서 공.. 2020. 3. 27. [ES6] 제너레이터 1. 제너레이터에 앞서 지난 포스팅(이터레이션)에서는 이터레이터이면서 이터러블인 객체에 대해서 살펴보았다. 이터레이터의 조건(next 메서드를 소유)과 이터러블의 조건([Symbol.iterator] 메서드 소유)을 만족 한다면 이는 이터레이터이면서 이터러블인 객체이다. 아래 코드에서 createInfinityByIteration 함수를 실행했을 때 반환되는 객체는 위의 조건을 모두 만족한다. // 이터레이션 프로토콜을 구현하여 무한 이터러블을 생성하는 함수 const createIteration = function() { let i = 0; // 자유 변수 return { [Symbol.iterator]() { return this; }, next() { return { value: ++i }; }, .. 2020. 3. 27. 함수 함수 함수란 특정 작업을 수행하기 위해 필요한 문들을 모아놓은 코드 블록을 의미한다. // multiply 함수의 정의(함수 선언문) function multiply(num1, num2) { return num1 * num2; } // multiply 함수의 호출 multiply(2, 4); // 8 1. 함수 정의 함수를 정의하는 방식은 3가지가 있다. 함수 선언문 함수 표현식 Function 생성자 함수 1.1 함수 선언문 함수 선언문(Function declaration) 방식 // multiply 함수 선언문 function multiply(num1, num2) { return num1 * num2; } 함수명 함수 선언문의 경우, 함수명은 생략할 수 없다. 매개변수 목록 0개 이상의 목록으로 괄.. 2020. 3. 27. 이전 1 2 3 다음