슈퍼코딩 16강 일급함수 + 클로저 정리
자바스크립트 함수의 특징
프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다.
일급 함수 (first class function)
https://developer.mozilla.org/ko/docs/Glossary/First-class_Function
1. 자바스크립트는 함수를 일급시민 (first class citizen) 으로 다룸
2. 이 말은 곧, 함수를 단순한 값으로 본다는 것임
3. 함수는 객체 타입 중 하나
정리하면
함수를 값으로 취급하고, 인수로 전달하고 다른 함수에서 함수를 반환하는 기능이
있는 경우 프로그래밍 언어에서 일급함수가
있다고 말한다.
화살표함수도 자바스크립트가 함수를
일급시민으로 즉 값으로 인식하기
때문에 가능한거다.
a, b를 매개변수로 받아서 a+b로 리턴하는 함수를 우리가 addFunction이라는 변수 안에다가 넣어주고 있는데 원래 변수에는 값을 넣어야죠?
const addFunction = (a,b) => a+b;
객체안의 메소드에도 함수표현식을 넣을 수 있는데 object는 key, value형태로 이루어져있는데 value부분에 함수를 넣었다라고 뷰면 된데
리액트 들어가게되면 많이 쓰게될 addEventListener
button object 즉 element 안에 addEventListener라는 함수를 넣어서
이 코드가 클릭 이벤트에 우리가 listener를 추가하겠다 이런 코드래
button.addEventListner(‘click’, () => console.log(‘click’));
이것도 함수안에 함수 넣은거다.
addEventListner안에 console.log 넣은거임
함수를 받거나 함수를 리턴하는게 가능한데
이게 고차함수라서 그런거임
클로저
모든 함수는 그 함수가 만들어지는 시점의 실행컨텍스트를 기억하여, (해당 실행 컨텍스트가 없더라도) 그 환경 변수에 접근할 수 있다.
함수가 리턴되면 실행컨텍스트가 콜스택에서 빠진다. 그러고 나면 스코프에서 나감
클로저는 함수가 만들어지는 시점의 변수들 간 연결을 끊어지지 않게 해주는 장치이다.
일급 함수 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함
developer.mozilla.org
원래는 전역함수를 줄여가면서 코드를 짜야함. 실수로라도 접근할 수 있기 때문임.
잘 정리해주셨다.
[JS]클로져(closure)와 클로져의 사용 예제
클로저란? MDN에서는 closure를 이와 같이 정의한다. > "A closure is the combination of a function bundled together (enclosed) with references to its surrounding state
velog.io
클로저 :
보통 return 으로 함수 정의해서 클로저를 사용한다.
익명 함수로 클로저를 정의하는 것은 일반적이지만, 이름이 있는 함수로도 클로저를 만들 수 있습니다. 다음은 두 가지 예제입니다.