Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Beesbeesbees
- cmarket
- https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%9C%EA%B3%B1-math-pow-%EA%B3%84%EC%82%B0/
- react
- https://lo-victoria.com/introduction-to-redux-toolkit-for-beginners
- removeCookie
- dom
- children vs childrenNodes
- @redux-toolkit
- https://www.daleseo.com/js-array-slice-splice/
- ㄷㅌ
- CSS
- User Flow
- https://developer-talk.tistory.com/299
- UI
- 자바스크립트
- 노드교과서
- 내장고차함수
- variable#function
- js
- JS#3일차달리자#초반인데#시간금방~
- 자바스크립트#JS#var#let#const#undefined#null
- UX
- for~in/for~of
- 자바스크립트#JS#slice#splice
- redux상태유지
- 헷갈린다~
- toString#String
- 자바스크립트#조건문#문자열
- slice/splice/split
Archives
- Today
- Total
Daily Front_Minhhk
[JS] 클로저 본문
"변수 및 함수 선언의 형태”
클로저 함수
- 클로저 함수의 특징
- 클로저 함수의 첫 번째 특징은 클로저 함수는 함수를 리턴하는 함수로 함수를 리턴하는 함수가 클로저의 형태를 만든다.
- 클로저 함수의 두 번째 특징은 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다.
- 클로저의 활용
- 데이터를 보존하는 함수
- 외부 함수의 실행이 끝나더라도, 외부 함수 내 변수를 사용할 수 있다.
- HTML 문자열을 만들 수 있다. (클로저는 이처럼 특정 데이터를 스코프 안에 가두어 둔 채로 계속 사용할 수 있게 해줍니다.)
- 정보의 접근 제한
- 클로저 모듈 패턴을 내부 함수를 단 하나만 리턴하는 것에 그치지 않고, 객체에 담아 여러 개의 내부 함수를 리턴하도록 만든다.
- 다만 외부 스코프에서는 내부 스코프의 변수에 접근할 수 없다라는 규칙에 의해, 어떤 경우에도 'value'는 직접 수정이 불가능하다. 대신. 리턴하는 객체가 제공하는 메서드를 통해 'value' 값을 간접적으로 조작할 수 있다. 이것이 바로 정보의 접근 제한(캡슐화)이다.
- 클로저를 통해 불필요한 전역 변수 사용을 줄이고, 스코프를 이용해 값을 보다 안전하게 다룰 수 있다.
- 모듈화
- 함수 재사용성을 극대화하여, 함수 하나를 완전히 독립적인 부품 형태로 분리하는 것을 모듈화라고 한다.
- 클로저를 통해 데이터와 메서드를 같이 묶어서 다룰 수 있다. 즉, 클로저는 모듈화에 유리하다.
- 데이터를 보존하는 함수
toggle 버튼을 누르면 box가 사라지고 생긴다.클로저 함수
<!DOCTYPE html>
<html>
<body>
<button class="toggle">toggle</button>
<div class="box" style="width: 100px; height: 100px; background: red;"></div>
<script>
var box = document.querySelector('.box');
var toggleBtn = document.querySelector('.toggle');
var toggle = (function () {
var isShow = false;
// TODO: ① 클로저를 반환하는 함수를 작성하세요.
return function () {
box.style.display = isShow ? 'block' : 'none';
// TODO: ③ isShow 변수의 상태를 변경하는 코드를 작성하세요.
isShow = !isShow;
};
})();
// ② 이벤트 프로퍼티에 클로저를 할당
toggleBtn.onclick = toggle;
</script>
</body>
</html>
'Code개발일지' 카테고리의 다른 글
[JS] koans 복습[(암묵,명시)타입변환, 호이스팅, 화살표함수, …etc] (0) | 2022.11.09 |
---|---|
[JS] ...Spread/Rest/구조분해할당 (0) | 2022.11.08 |
[JS] 원시자료형(stack) / 참조자료형(heap) (0) | 2022.11.07 |
[JS] 객체 (0) | 2022.11.04 |
[JS] 배열(push,pop / unshift,shift) + (for in/for of, slice/splice/split, concat, join) (0) | 2022.11.03 |