계속 복습하며 이해하려고 하는중이다.
함수에서 클로저를 사용하기에 적절한 상황은 어떤게 있을까요?
――――――――――――――――――――――――――――――――――――――――――
오늘 풀었던 문제인데 잘모르겠다.
다음은 클로저가 유용하게 사용되는 상황인 버튼을 클릭하면 나타나고 사라지는 토글을 구현한 예제 코드입니다. 클로저 개념을 활용해서 isShow 변수의 Javascript 를 작성해 보세요.
<!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 () {
// TODO: ③ isShow 변수의 상태를 변경하는 코드를 작성하세요.
};
})();
// ② 이벤트 프로퍼티에 클로저를 할당
toggleBtn.onclick = toggle;
</script>
</body>
</html>
toggle
정답
// ① 클로저를 반환
return function () {
box.style.display = isShow ? 'block' : 'none';
// ③ 변수 상태 변경
isShow = !isShow;
};