44. REST API
·
Book/모던 자바스크립트 Deep Dive
44.2 REST API 설계원칙REST에서 가장중요한 기본적인 원칙은 두가지다.URI는 리소스를 표현하는데 집중하고 행위에 대한 정의는 HTTP 요청 메서드를 통해한다.1. URI는 리소스를 표현해야한다.# badGET /getTodos/1GET /todos/show/1# goodGET /todos/12. 리소스에 대한 행위는 HTTP 요청 메서드로 표현한다.HTTP 요청메서드GET모든/특정리소스취득POST리소스 생성PUT리소스의 전체 교체PATCH리소스의 일부수정DELETE모든/특정 리소스삭제44.3 JSON Server를 이용한 REST API 실습JSON Server는 json파일을 사용하여 가상 REST API 서버를 구축할수있는 툴이다.매번 같은 명령어를 입력하는것이 번거로우니 package...
46장 제너레이터와 async/await
·
Book/모던 자바스크립트 Deep Dive
46.6 async/await 함수async/await를 사용하면 프로미스의 then/catch/finally 후속 처리 메서드에 콜백함수를 전달해서 비동기 처리결과를 후속 처리할 필요 없이 마치 동기 처리 처럼 프로미스를 사용할 수있다. 46.6.1 async 함수 await 키워드는 반드시 async함수 내부에서 사용해야한다. async함수는 async 키워드를 사용해 정의하며 언제나 프로미스를 반환한다.asnyc function foo(n) { return n; }foo(1).then(v => console.log(v));// async 함수 표현식const bar = async function (n) { return n; };bar(2).then(v => console.log(v)); // 2//..
45장 프로미스
·
Book/모던 자바스크립트 Deep Dive
45.2 프로미스의 생성Promise 생성자 함수를 new 연산자와 함게 호출하면 프로미스 객체를 생성한다.ES6에서 도입된 Promise는 호스트 객체가 아닌 ECMAScript 사양에 정의된 표준 빌트인 객체다.const promise = new Promise((resolve, reject) => { if( /* 비동기 처리 성공 */){ resolve('result'); }else{ reject('falure reason'); }}); Promise 생성자 함수가 인수로 전달받은 콜백 함수 내부에서 비동기 처리를 수행한다.이때 비동기 처리가 성공하면 콜백 함수의 인수로 전달받은 resolve 함수를 호출하고, 비동기 처리가 실패하면 reject 함수를 호출한다.생성된 직후의 프로미스는 기본적으로..
24장 클로저
·
Book/모던 자바스크립트 Deep Dive
클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.const x = 1;function outerFunc() { const x = 10; function innerFunc() { console.log(x); // 10; } innerFunct();}outerFunc();이렇게 innerFunc가 x변수에 접근할수있는이유는 자바스크립트가 렉시컬 스코프를 따르는 프로그래밍 언어이기 때문이다. 24.1 렉시컬 스코프자바스크립트 엔진은 함수를 어디에 정의했는지에 따라 상위스코프를 결정한다.이를 렉시컬 스코프(정적 스코프)라 한다.const x = 1;function foo() { const x = 10; bar();}function bar() { console.log(x);}foo();bar();..
19장 프로토타입
·
Book/모던 자바스크립트 Deep Dive
19.1 객체지향 프로그래밍객체지향 프로그래밍은 특징이나 성질을 나타내는 속성을 가지고있고, 이를통해 구별할 수 있다.이처럼 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화라 한다.const person = { name: 'Lee', address: 'Seoul'};console.log(person); 19.2 상속과 프로토타입상속은 객체지향 프로그래밍의 핵심 개념으로 , 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것을 말한다.function Circle(radius) { this.radius = radius; this.getArea = function () { return Math.PI * this.radius ** 2; };}con..
20장 strict mode
·
Book/모던 자바스크립트 Deep Dive
20.1 strict mode란?function foo() { x = 10;}foo();console.log(x); // ?위의 코드를 보면 foo 함수 내에서 선언하지 않은 x변수에 값 10을 할당했다.이때 x 변수를 찾아야 x값에 할당할 수 있기때문에 자바스크립트 엔진은 x 변수가 어디에 선언됬는지스코프 체인을 통해 검색하기 시작한다.foo함수의 스코프에서 x변수 선언을 검색한다. 하지만 없으므로 상위스코프로 간다.전역 스코프에도 x 변수의 선언이 존재하지 않기때문에 ReferenceError를 발생시킬것같지만 암묵적으로전역객체에 x 프로퍼티를 동적 생성한다. 이러한 형상을 암묵적 전역이라한다.암묵적 전역은 오류를 발생시키는 원인이 크기때문에 반드시 var, let, const 키워드를 사용해야한다...