JavaScript (21) 썸네일형 리스트형 [JavaScript]재귀함수 자기 자신을 호출하는 함수를 재귀 함수라고 한다. 재귀 함수를 잘 활용하면 반복적인 작업을 하는 문제를 좀 더 간결한 코드로 풀 수 있다. 재귀 함수를 코드로 간단하게 만들어 보면 아래와 같이 작성할 수 있다. function recursion() { console.log("이 것이 재귀함수다."); recursion(); } 자기 자신을 호출하는 함수를 재귀 함수라고 한다. 재귀 함수를 잘 활용하면 반복적인 작업을 하는 문제를 좀 더 간결한 코드로 풀 수 있다. 재귀로를 사용하기 적합한 경우 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우 반복문으로 작성된 코드를 더욱 간결하고 이해하기 쉽게 작성하고 싶은 경우 수(n)를.. [JavaScript] Promise Promise 자바스크립트의 내장 객체이며, 콜백함수를 대체하여 사용한다. Promise.resolve(): 주어진 값으로 이행하는 Promise 객체를 반환 Promise.reject(): 거부된 이유를 반환 Producer Promise의 인스턴스가 Producer이다. const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve("hi"); // reject(new Error("에러 발생")); }, 3000); }); 💡 새로운 Promise 인스턴스가 생성될때 executor가 자동적으로 실행된다. Consumer Promise 인스턴스의 메서드인 then, catch, finally가 Consumer이다. promi.. [JavaScript] 비동기 많은 프로그램 명령어들이 동기식이며, 우리가 다른 사람과 통화할 때처럼 말을 주고 받아야 하는 것이 동기(synchronous)이다. 하지만 메시지처럼 한 쪽에서 여러개의 문자를 남기고 이후에 수 있는 것이 비동기(asynchronous)이다. 전화 문자 blocking non-blocking synchronous asynchronous 동기는 태스크들이 순서대로 실행이 되며, 호출한 함수가 작업 완료를 신경 쓴다. 비동기는 태스크들이 동시에 실행될 수 있으며, 호출된 함수가 작업 완료를 신경 쓴다. 즉, 호출되는 함수의 작업 완료를 누가 신경을 쓰느냐의 차이이다. 동기와 비동기를 말할때 같이 등장하는 단어가 있다. 바로 blocking과 non-blocking이다. blocking은 호출한 함수에게 제.. [JavaScript] 프로토타입 체인 프로토타입 체인 자바스크립트에서는 객체는 자신만의 속성과 메소드를 갖고 있다. 객체의 어떤 속성에 접근하려할 때 그 객체 자체 속성 뿐만 아니라 객체의 프로토타입, 그 프로토타입의 프로토타입 등 프로토타입 체인의 종단에 이를 때까지 그 속성을 탐색한다. 이처럼 프로토타입이 계속해서 연결되어 있어 프로토타입 체인이라고 부른다. extends와 super 키워드를 사용하여 상속하는 방법 class Human { constructor(name, age, height, weight) { this.name = name; this.age = age; this.height = height; this.weight = weight; } greeting() { console.log(`Hi I'm ${this.name}.`.. [JavaScript] 프로토타입 프로토타입 JavaScript에서는 객체를 상속하기 위해서 프로토타입을 사용한다. 프로토타입은 부모 객체의 속성과 메소드를 탐색하여 가져올 수 있다. .prototype .prototype은 생성자의 속성이다. .prototype을 이용하면 위에서 말한 부모 객체의 속성과 메소드를 자식 객체에서도 사용이 가능하다. .prototype은 자식 객체에 없는 속성과 메소드를 마주치면 부모 객체로 이동하여 속성과 메소드를 탐색한다. .proto .__proto__는 개별 객체의 속성이다. .__proto__를 이용하여 부모 prototype을 탐색할 수 있다. 클래스, 인스턴스, 프로토타입의 관계 [JavaScript] 객체 지향 프로그래밍 객체 지향 프로그래밍은 우리가 살고 있는 실제 세계가 객체들로 구성되어 있는 것과 비슷하게, 소프트웨어도 객체로 구성하는 방법이다. 객체 지향 프로그래밍은 클래스와 인스턴스를 이용하여 객체로 그룹화를 하며, 4가지 주요 개념을 통해서 재사용성을 얻는다. 객체 지향 프로그래밍의 4가지 주요 개념 캡슐화 추상화 상속 다형성 캡슐화 캡슐화는 속성과 메서드를 따로 정의하는 것이 아닌, 하나의 객체 안에 넣어서 묶는 것이다. 캡슐화를 사용하면 코드가 복잡하지 않게 만들고, 재사용성을 높여준다. 속성과 메서드들이 느슨하게 결합된다. 느슨한 결합은 코드를 실행 순서에 맞춰서 작성하는 것이 아닌 실제 객체의 모습과 닮게 코드를 작성하는 것이다. 은닉화는 내부의 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것이다.. [JavaScript] 클래스와 인스턴스 클래스는 청사진(blueprint)이고, 인스턴스는 청사진을 바탕으로 만들어진 객체이다. 먼저 주로 사용되는 ES6 클래스 작성 문법으로 클래스를 만들어보자. //ES6 문법 class Student { // 클래스 constructor(name, age, grade) { // 생성자 함수 this.name = name; this.age = age; this.grade = grade; } study() { // 메소드 return `${this.name}이(가) 공부를 시작했습니다.` } rest() { // 메소드 return `${this.name}이(가) 휴식을 취하고 있습니다.` } } 클래스에 속성과 메소드를 정의 하고, 인스턴스에서 사용을 한다. Student라는 클래스에는 아래와 같이 nam.. [JavaScript]고차함수 일급 객체(First-class Object) 자바스크립트에서 함수는 일급 객체 중 하나이며, 일급 객체는 아래와 같은 특징을 갖는다. 변수에 할당할 수 있다. 다른 함수에 전달인자(argument)로 전달될 수 있다. 다른 함수의 결과로서 리턴될 수 있다. // JavaScript에서 함수는 일급 객체이므로 변수에 할당할 수 있다. const double = function (num) { return num * 2; }; // 변수 double에 함수가 할당되어 있다. 따라서 함수 호출 연산자 "()"를 쓸 수 있다. result = double(2); console.log(result); // 4 고차 함수(higher order function) 고차함수는 함수를 전달인자로 받을 수 있고, 함수를.. 이전 1 2 3 다음