티스토리 뷰

Javascript

javascript의 closure

딩신 2021. 1. 4. 21:39
const outer = () => {
	let a = 1
    const inner = () => {
		return a++
	}
	return inner
}

console.log(outer()()) // 2

const outer2 = outer()

console.log(outer2()) // 2
console.log(outer2()) // 3

 

결국 클로져는 자신이 생성된 환경의 lexical environment를 가지고 있는 것

 

useState와 관련성

useState도 결국 클로져를 사용하는것

 

function useState(init){
	let a = init
    const getA = () => a
    const setValue = (v) => {
		a = v
	}
    return [getA,setValue]
}

const [getA, setA] = useState(5)
console.log(getA()) // 5
setA(10)
console.log(getA()) // 10
댓글