[JS] 어이 클태식이... 돌아왔구나 - Clousure편

devicii·2021년 5월 18일
1

javascript

목록 보기
2/7

너를 처음 만나게 된 순간

자바를 메인으로 가르치는 국비학원에서 자바스크립트는 사실 겉핥기보다 더 얕게 배웠다.
거의 Jquery만 알려주는 정도? 그 이후에 프론트엔드 개발자가 되기로 결정한 나는 남들이 자바를 배우는 동안 열심히 자바스크립트를 혼자 공부했다... 그리고 클로져를 처음 보고 응? 이라는 애매한 개념 정리와 함께 넘어가고, 다른 문법들을 더더욱 공부했다.

❔ What is clousure


function add1(a, b) {
	return a + b
}

add1(6, 11) // 17

위에 만들어진 add1()함수를 보면 이 글을 읽는 누구나 이해하듯이 17이라는 값이 반환될 것이라는 것을 예측할 수 있다.

function add1(a, b) {
	return a + b
}
let poison = 0

function add2(a, b) {
	return a + b + position
}

poison = 3
add1(6, 11) // 17
add2(6, 11) // 20

여기서 add2()함수를 보게 된다면 add2함수의 반환되는 값은 눈치채듯이 add1과는 다르게 반환될 것이다. 여기서 보듯이 add2()함수에서 poison이라는 외부 변수와 함수가 합쳐진 것을 클로져 라고 말한다.
+++ add1()은 순수함수이다.

❔ 왜 우리는 이때까지 클로져가 어려웠을까

자바스크립트 함수는 모든 함수가 클로져 함수라고 해도 틀린 말은 아니다. 그래서 이미 모르고 사용하던 존재를 개념화시켜 이해하려고 하니 더 헷갈린다고 생각한다.

ex1.자바처럼 annotation을 사용하는 문법

function add1(a, b) {
	return a + b
}

let poison = 0

@capture(poison)
function add2(a, b) {
	return a + b + position
}

ex2. pure라는 키워드를 붙여 순수함수라고 명시해주는 문법

pure function add1(a, b) {
	return a + b
}

let poison = 0

function add2(a, b) {
	return a + b + position
}

END

만약 이런 식으로 자바스크립트의 문법이 클로져를 구분하게 되어있다면 더욱 이해하기 쉬웠을 거 같다.
클로저는 알고 보면 항상 우리의 곁에 존재하는 녀석이기에 이 녀석을 구분하려 하니 더 헷갈렸다.
이유는 모르겠지만 자바보다 자바스크립트가 더 재밌다 이런 정신 사나운 문법이 매력있는 녀석,,,

profile
Life is a long journey. But code Should be short :)

0개의 댓글