일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 엑셀드래그단축키
- 암홀트롭
- 요척합의
- TACKING
- 미국영어연음
- 자켓실측
- 필터링후복사붙여넣기
- 와끼
- 엑셀자동서식
- 엑셀필터복사붙여넣기
- 영어시간읽기
- AATCC
- 나일론지퍼
- 지연환가료
- 40HQ컨테이너
- 헤이큐
- 비리짐
- 웹API
- 핸드캐리쿠리어차이점
- 우레탄지퍼
- 클린코드
- WHATTIMEOFTHEDAY
- 비슬론지퍼
- Armhole Drop
- 미니마카
- 40HQ컨테이너40GP컨테이너차이
- 봉제용어
- 슈퍼코딩
- 고급영어단어
- MERN스택
- Today
- Total
CASSIE'S BLOG
슈퍼코딩 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 넣은거임
함수를 받거나 함수를 리턴하는게 가능한데
이게 고차함수라서 그런거임
클로저
모든 함수는 그 함수가 만들어지는 시점의 실행컨텍스트를 기억하여, (해당 실행 컨텍스트가 없더라도) 그 환경 변수에 접근할 수 있다.
함수가 리턴되면 실행컨텍스트가 콜스택에서 빠진다. 그러고 나면 스코프에서 나감
클로저는 함수가 만들어지는 시점의 변수들 간 연결을 끊어지지 않게 해주는 장치이다.
원래는 전역함수를 줄여가면서 코드를 짜야함. 실수로라도 접근할 수 있기 때문임.
잘 정리해주셨다.
클로저 :
보통 return 으로 함수 정의해서 클로저를 사용한다.
익명 함수로 클로저를 정의하는 것은 일반적이지만, 이름이 있는 함수로도 클로저를 만들 수 있습니다. 다음은 두 가지 예제입니다.
'PROGRAMMING > React' 카테고리의 다른 글
컴포넌트와 엘리먼트의 차이 (1) | 2023.10.21 |
---|---|
[슈퍼코딩] 18강 JAVASCRIPT XML (JSX)복습 (0) | 2023.10.20 |
node js vs npm (0) | 2023.10.14 |
리액트 배포일지 (0) | 2023.10.13 |
테이블 로딩 (0) | 2023.10.13 |