본문 바로가기

33jsconcepts24

JS33 - 23.재귀함수(Recursive Function) 함수 그 자체에서 자기 자신을 호출하는 함수 자바스크립트에서 재귀 함수를 구성 할 때는 Leave Event가 있어야 합니다. Leave Event? 함수가 재귀 루프를 종료 할 수 있게 하는 제어문. if문, 삼항인수, switch문 등이 될 수 있다. 프랙탈, 정렬 또는 복잡한 또는 비선형 데이터 구조의 노드 탐색과 같은 반복 분기와 관련된 문제를 해결하는 데 가장 효과적입니다. 함수형 프로그래밍 언어에서 재귀를 선호하는 한 가지 이유는 로컬 변수를 사용하여 상태를 설정 및 유지 관리 할 필요가 없는 코드를 생성 할 수 있기 때문입니다. 재귀 함수는 주어진 입력에 대해 구체적이고 일관된 반환 값을 가지고 외부 변수 상태에 대한 부작용이 없는 순수한 방식으로 작성하기 쉽고 자연스럽게 테스트하기 쉽습니다.. 2021. 6. 8.
JS33 - 22.고차함수(Higher Order Function) 고차함수란? 고차 함수는 함수 인수를 받거나 함수를 반환하는 함수입니다. ( === 함수를 주고받는 함수) map(),reduce(),filter(),setTimeout(),addEventListener(),bind() …. // ES6 version const characters = [ {name: 'Luke Skywalker', img: 'http://example.com/img/luke.jpg', species: 'human'}, {name: 'Han Solo', img: 'http://example.com/img/han.jpg', species: 'human'}, {name: 'Leia Organa', img: 'http://example.com/img/leia.jpg', species: 'hum.. 2021. 6. 8.
JS33 - 21.클로져(Closure) 정의 #1 : 클로저는 스코프가 닫힌 후에도 상위 스코프에 접근 할 수 있는 함수입니다. 정의 #2: 클로저는 함수와 해당 함수가 선언된 ‘lexical environment’의 조합입니다. //this is closure's global scope function outie(){ // this is closure's first and only outer scope function closure(){ // this is closure's local scope } } closure는 외부의 변수를 기억하고 접근할 수 있는 함수입니다(스코프 체인에 값에 대한 참조를 저장한다). 몇몇 언어에서는, 이러한 구현이 불가능합니다. 또한 이러한 일이 일어나게 하기 위해서는 함수를 특별한 방법으로 작성해야 합니다. 하.. 2021. 6. 8.
JS33 - 20.Pure function, Side effect, Mutate Pure function 순수함수 동일한 인수가 주어지면 항상 동일한 결과를 반환하는 함수 함수실행 중에 변경되는 상태 또는 데이터에 종속되지 않는다. 인자에만 의존해야 합니다. 이 함수는 네트워크 요청, 입력 및 출력 장치 또는 데이터 돌연변이와 같은 관측 가능한 부작용을 생성하지 않는다. Clojure와 Scala에서 파생된다. Procedure programming 전역 변수 또는 클래스의 인스턴스는 순수 함수 내에서 합법적 인 변수로 간주되지 않습니다. 변수의 전역 범위는 순수 함수의 생성에 사용되지 않습니다. 장점 및 필요성 Side effect(외부와의 상호작용)이 없다. (Side effect 자체는 나쁘지 않지만 포함되면 순수함수가 아니다) Making a HTTP request Mutat.. 2021. 6. 3.
JS 33 - 18.Object.create와 Object.assign, js에서 객체 복사하기 Object.create ECMAScript 5의 기능, IE8 이하 버전 사용 불가 프로토타입 체인만 연결한다고 보면 될 듯 // 1 const original = { a: 1, b: 2, c: { d: 3 } }; // 2 const copied = Object.create(original); // 복사가 아니다! console.log(original.isPrototypeOf(copied)); //true // 3 original.a = 1000; original.c.d = 3000; console.log(copied.a);// 1000 console.log(copied.c.d);// 3000 // 4 console.log(copied);// {} // 5 original.hasOwnProperty(.. 2021. 6. 3.
JS33 - 17.프로토타입의 상속과 체인 prototype vs Prototype prototype (속성) - 특정 객체의 prototype 객체: JavaScript로 작성한 모든 기능의 속성으로 지정된 특수 객체입니다. 여기서 분명히 설명 하겠지만, JavaScript가 제공하는 내부 함수 (+ bind에 의해 반환 된 함수)에는 필수 항목이 아닌 모든 함수에 대해 이미 존재합니다. 이prototype은 (new 키워드를 사용하여) 그 함수에서 새로 생성 된 객체의[[Prototype]](아래 참조)이 가리키는 것과 동일한 객체입니다. [[Prototype]] (링크속성) - 생성자 함수의 prototype 프로퍼티가 가리키는 prototype 객체: 이것은 객체에서 읽혀지는 일부 속성을 사용할 수 없는 경우 실행 중인 컨텍스트가 액세스하.. 2021. 6. 3.