함수 유효범위 (Scope)
유효범위 (Scrope) = > 수명
자바스크립트 === 함수형 언어 (모듈화의 근간) 이라고 들었다.
세분화 하고 쪼개고 그안에서 효율적으로 동작하게하고
벌써부터 어려운건 나뿐만아니겠지?
오늘도 시작해볼까
함수안에서 vsope 변수가 선언되어있다면,가까운 변수를 먼저 찾아서 값을 호출한다.

값은 undefined. 왜냐하면 지역변수로 선언된 곳에서는 지역에서만 가능 글로벌에서 불러올수 없다.

var를 함수에 쓰고 안쓰고의 차이는

var 사용하지 않았을때
콘솔에서는 ‘global’을 가르키는거지만,
vscope 의 변수가 global 에서 ‘local’ 값으로 변경된것이다.
그렇다면 이결과는?

Global 이 된다.
전역변수를 사용해야하는 이유가 분명하지 않다면,
언제나 지역변수를 사용해야한다.
왜냐하면 수 많은 함수와 수 많은 변수들이 만들어지는데
그 과정에서 내가 만드는것일수도 있고, 다른 사람이 만든 것일수도 있는데
똑같은 변수의 이름이지만 다른기능으로 사용 될수 있기때문이다
다른사람에 의해서
또는 나로 인해서 의도하지 않는 코드의 작동이 생길수 있기때문이다
그래서 지역변수로 사용하는것이 이름에 따른 충돌을 막는 최선의 방법이다.

위 코드의 값은 0,1,2,3,4 까지 찍히게 되는데

i = 0 ; var 를 뺀다면 무한루프가 돌아서 컴퓨터가 결국 멈추게된다 .
그 이유는 뭘까 ?
같은 이름의 변수이름을 사용한다면 ,
같은 의미에서 사용됐지만 각각 의 취지가 다를때 이런 심각한 문제를 발생한다
코드가 짧기때문에 금방 수정할수있지만 크게가 커지면, 찾기 어려워진다
불가피 하게 사용 되어야 할때는 어떻게 해야하는가 ?
하나의 객체를 전역 변수로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용한다
위 코드를 살펴 보자면
left 와 right 각각의 키 밸류를 할당했다.
각각의 변수에 같은 키 값을 사용했지만 할당 해 놓은
변수의 이름이 다르기 때문에 혼동을 막을수있고
caluclator 변수와
coordinate 변수를
MYAPP 전역 변수에 할당함으로써
MYAPP 하나의 변수에만 접근하면 충돌을 그마나 줄 일수 있게된다.
함수는 어디서든 호출이 가능하고
배열에 담을수도있으며, 익명으로 작동할수도있지만
유효범위라는게 존재하기때문에 어떤 상황인지
어디까지 참조하는지, 참조하게 해야하는지, 참조하게 할것인지에
따라서 유효범위로써의 조작을 통해 효율적인 코드를 어떻게 작성할것인가에 대한
생각이 든다 .
함수라던지,배열이라던지
자바스크립트의 문법에 따라 근거해서 코드를 작성하지만
각자 규칙이 많아서 쉽게 넘어갈수있는부분이 단 하나도 존재하지않는다,
특히 잘 쓰는 메소드형태나 함수형태등 많은 영향을 미치는것같다.
프로그래밍의 세계에 진짜 들어온것인가??
그저 신난다 ㅎㅎ