[JavaScript] ... 문법
·
JavaScript
자바스크립트에서 ... 을 사용하는 문법이 2개가 있다. 하나는 rest 파라미터, 다른 하나는 spread operator 가 있다. rest 파라미터 함수에 파라미터를 넘겨줄 때, 몇 개의 파라미터가 들어갈지 미리 정의할 수 없는 경우가 있다. 그럴 때 사용하는 것이 rest 파라미터이다. function addAll(...num) { let sum = 0; num.forEach(element => { sum+= element; }) return sum; } addAll(1,2,3,4,5); addAll(1,2,3,4,5,6,7,8,9,10); 함수 파라미터의 명칭 앞에 ... 을 붙여주면 파라미터를 여러 개를 받는다는 뜻이다. 특징으로는 일반 파라미터 뒤에만 올 수 있다. function addAl..
[JavaScript] 콜스택
·
JavaScript
1. JavaScript 자바스크립트는 하나의 스레드로 단 1개의 동시성만 다루는 언어이다. 즉, 한 번에 한 개의 작업만 할 수 있다는 뜻이다. 단, 비동기 콜백들은 제외하고 말이다. 자바스크립트는 힙, 큐와 함께 구성하는 단일 콜스택을 가진다. 2. 콜스택 원시 타입의 데이터가 저장되거나 함수의 호출을 기록하는 자료구조이다. 기본적으로 프로그램 안에 위치해서 우리가 어떤 함수를 실행시키면 스택 위에 작업을 추가(Push)하고, 함수로부터 반환받을 때 스택의 맨 위에서부터 가져온다(Pop). function foo(b) { let a = 5; return a * b + 10; } function bar(x) { let y = 3; return foo(x * y); } console.log(bar(b))..
[JavaScript] 제너레이터와 이터레이터
·
JavaScript
1. 제너레이터 함수? ES6에 도입된 제너레이터(Generator) 함수는 이터러블을 생성하는 함수이다. 이전에 사용한 이터레이션 프로토콜을 준수해서 사용자 생성 방식보다 간단하게 이터러블을 구현할 수 있다. 또, 제너레이터 함수는 비동기 처리에 유용하게 사용된다. function* gen() { yield 1; yield 2; yield 3; } const genlter = gen(); console.log(genIter.next()); // {value:1, done: false} console.log(genIter.next()); // {value:2, done: false} console.log(genIter.next()); // {value:3, done: false} console.log(g..
[JavaScript] ES6에서의 순회와 이터러블
·
JavaScript
1. ES6에서의 리스트 순회 우리가 일반적으로 사용하는 리스트의 순회는 for( let i = 0; 1 < 10; i++) 방식이다. const list = [1, 2, 3]; for(let i = 0; i < list.length; i++) { console.log(list[i]); } ES6에 오면서 새로운 방식의 리스트 순회가 생겼다. const list = [1, 2, 3]; for(const a of list) { console.log(a); } for of 방식으로 내부 데이터를 쉽게 조회하는 방법이 생겼다. 2. 이터러블/이터레이터 프로토콜 이터러블 프로토콜은 ES6에서 도입된 것으로 순회 가능한 객체를 나타내는 프로토콜이다. for of 반복문, ... 전개 연산자, 구조 분해 등과 같이..
[JavaScript] 고차 함수 ( Higher-Order Function )
·
JavaScript
고차 함수를 이해하기 위해서는 함수형 프로그래밍이 무엇인지, 퍼스트 클래스 함수의 개념이 무엇인지 이해하는 것이 도움이 된다. 함수형 프로그래밍 함수를 다른 함수의 파라미터로 넘길 수 있고, return 값으로 함수를 받을 수 있는 프로그래밍 형태이다. 퍼스트 클래스 함수 자바스크립트가 함수를 일급 시민( first-class citizen )으로 대해준다. 왜냐하면 자바스크립트 또는 함수형 프로그래밍 언어 함수들은 전부 객체이다. 자바스크립트에서, 함수는 Function 객체라는 특별한 타입이다. function special () { console.log("hello"); } special(); special.test = "!?"; console.log(special.test); // !? 자바스크립..
[JavaScript] 함수 ( 선언 ) 형 프로그래밍
·
JavaScript
함수형 프로그래밍? 함수를 다른 함수의 파라미터로 넘길 수 있고, return 값으로 함수를 받을 수 있는 프로그래밍 형태이다. // 명령형 function double (arr) { let results = [] for (let i = 0; i item * 2) } function add (arr) ..
[JavaScript] for문과 forEach문 차이
·
JavaScript
for문 예시 const array = new Array(4); for (let i = 0; i { // ... }) 차이점 동기와 비동기 for문은 동기 방식이기 때문에 오류가 나면 오류가 난 위치 이후의 작업이 동작하지 않고 멈춰버린다. 하지만 forEach문은 비동기 방식이기 때문에 멈추지 않고 동작한다. 성능 차이 forEach 문은 " 향상된 for문 " 이라고 칭하며, 가변적인 배열이나 리스트 크기를 구할 필요가 없어 복잡한 반복문에 적합하며, 인덱스를 생성하여 접근하는 for문보다 수행 속도가 빠르다. forEach문의..