July 14, 2020
๐ ํด๋น ์ค์ฝํ(์์ญ)์์, ์์ ์ด ์ฐธ์กฐํ ์ ์๋ ๋ณ์๋ฅผ ํด๋ก์ ๋ผํ๋๊ฒ ๊ฐ๋๋ผ.
Scope
๋ ํจ์๊ฐ ํธ์ถ๋ ๋๊ฐ ์๋๋ผ, ์ ์ธํ์ ๋ ์ ํด์ง๋ค๊ณ ํ์์.
์ค์ฝํ๋ ํจ์๋ฅผ ํธ์ถํ ๋๊ฐ ์๋๋ผ, ํจ์๋ฅผ ์ด๋์ ์ ์ธํ๋์ง์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
// 1๋ฒ
function outerFunc() {
var x = 10
var innerFunc = function() {
console.log(x)
}
innerFunc()
}
// innerFunc๋ ํจ์์ ์์น๊ฐ outerFunc์ ๋ด๋ถ์ด๊ธฐ ๋๋ฌธ์, outerFunc์ ๋ณ์ x๋ฅผ ํด๋ก์ ๋ก ๊ฐ์ ธ์ฌ ์์์ผ๋ฉฐ, innerFunc์์ ์ ์ฐธ์กฐํ ์ ์๋ค.
outerFunc()
var box = document.querySelector('.box')
var toggleBtn = document.querySelector('.toggle')
var toggle = (function() {
var color = false
// โ ํด๋ก์ ๋ฅผ ๋ฐํ
return function() {
box.style.background = color ? 'red' : 'blue'
// โข ์ํ ๋ณ๊ฒฝ
color = !color
}
})()
// ์ฆ์์คํํจ์๋ก, ์๊ตฌ์ ์ผ๋ก toggle ์ด๋ฒคํธ๋ return ๋ ํจ์์.
// ํ์ง๋ง, closure ์์ฑ์, color๋ผ๋ ๋ณ์๋ ์กด์ฌํ๊ณ ์์.
// โก ์ด๋ฒคํธ ํ๋กํผํฐ์ ํด๋ก์ ๋ฅผ ํ ๋น
// console.dir(toggle) // closure๋ก color์ ๊ฐ ๊ฐ๊ณ ์์
toggleBtn.onclick = toggle