본문 바로가기

Programming/Java Script

JavaScript(JS)의 Scope (var, let, const)

참조 : http://justmakeyourself.tistory.com/entry/javascript-scope


스코프 : 유효범위


const num = 123;

console.log(num);    // 123 출력


그렇다면,

{

const number =456;

}

console.log(number); 


위의 넘버는 어떻게 출력이 될까?

--> 에러 생성






정적 스코프 , 동적 스코프


const x = 10;
function func1(){
  const x=7;
  func2();
}
function func2(){
  console.log(x);
}
func1(); //콘솔에 찍히는 x 값은 무엇일까요?


  A. 10


--> 자바스크립트의 스코프는 "정적"이기 때문. (정적스코프는 선언되었을 때를 기준으로 함.)  반대로 동적스코프는 실행될 때를 기준으로.


func2가 실행되었을 때의 x 값은 7일지 몰라도, 정의되었을 때 x는 10을 가리키고 있음.


전역스코프

 전역 변수라는 말은 '모든 곳에서 접근' 할 수 있는 변수. 
 따로 아무 블록없이 변수를 하면 전역변수가 됨.

 --> 전역 변수를 되도록이면 없게 하는 것이 바람직함.
어디서든 접근할 수 있다는 것은 의도치 않은 버그를 일으킬 수 있기 때문.




요약 

아무 블록 없는 상태에서 작성하면 전역 스코프
var : 함수스코프
let, cosnt :  블록 스코프