때로는 함수와 변수의 정의를 이용한 복잡하고 다양한 활용방법을 배우기도 하지만 자바스크립트 안에서는 scope를 이용한 논리적인 정의와 사용방법을 익히는 것도 매우 중요하다는 것을 알게 되었다. 어느 곳에 변수를 한정하여 특정한 값만을 나오게 할 수도 있고 변수를 고정하게 하여 함수를 좀 더 쉽게 사용할 수 있게 하는 scope와 클로저는 앞에서 배웟던 반복문이나 조건문 같이 단순하게 외우면 이해할 수 있는 부분은 아니었던 것 같다. 비록 난해한 식이지만 앞으로 반복적으로 사용하면 익숙해질 것이라 굳게 믿는다.
Scope = > 변수가 접근할 수 있는 영역
전역변수 = > 중괄호({}) 밖에 선언된 변수
지역변수 = > 중괄호 안에 선언된 변수
ex)
let a = 2;
function geta(){
return a;
}
let result = geta(20)
console.log(result) => 2
=> 함수 인자 20은 사용되지 않는 값이 된다.
함수의 a의 리턴값은 전역변수의 a를 참조하게 된다.
ex)
let a = 2
function returna(){return a;}
function setupa(value){let a = value;}
set(10)
let result = returna(20)
console.log(result) => 2
=> setupa함수의 let a를 이용한 변수 a 는 setupa 함수의 a일 뿐 전역변수(let a = 2)와는 다른 값이다.
returna의 함수의 인자 20은 전과 같이 사용되지 않는 값이다.
따라서 return a는 자동적으로 전역변수 a의 값인 2가 된다.