하루에 한 문제

스코프 (ECMAScript 2015 ) 본문

Dev/JavaScript

스코프 (ECMAScript 2015 )

dkwjdi 2021. 4. 28. 18:49

스코프란?

스코프는 말그대로 범위이다. 스코프는 전역 스코프와 지역 스코프로 나뉜다

 

전역 스코프

전역 스코프는 변수가 함수 바깥이나 { } 바깥에서 선언되었다면, 전역스코프다.

var a="a"

이렇게 전역 변수를 선언하면 모든곳에서 a 라는 변수를 사용할 수 있다.

심지어 함수에서도 사용이 가능하다!

function print(){
 console.log(a)
}

print라는 함수를 호출하게 되면 "a"가 출력될것이다.

 

딱 봤을 때 편리해보인다..

하지만 전역 스코프를 이용해서 변수를 선언하는 것은 매우매우매우매우 안좋다!

변수가 충돌할 수도 있고, 내가 쓰려는 용도와 다르게 사용될 확률이 높기 때문이다.

 

 

지역 스코프

지역 스코프는 특정 지역에서만 사용할 수 있는 변수다.

자바스크립트에서 지역 스코프는 크게 두가지로 설명이 가능하다.

함수 스코프와 블록 스코프!

 

함수 스코프

만약 함수안에서 변수를 선언한다면 그 변수는 선언된 함수 안에서만 사용이 가능하다

function helloHi(){
 var hello = "hello"
 console.log(hello);
}
helloHi() //"hello"
console.log(hello) // Error, hello is not defined

이런 식으로 함수 밖에서 사용을 하게 되면 not defined가 뜨게 된다~

 

블록 스코프

블록 스코프는 중괄호{} 내부에서 const 또는 let으로 변수를 선언하면, 그 변수들은

중괄호 블록 내부에서만 사용이 가능하다.

이는 ECMAScript 2015 에서 나온 문법이다!

{
  const hello="hello"
  let hi="hi"
  console.log(hello) // "hello"
  console.log(hi) // "hi"
}
console.log(hello)// Error, hello is not defined
console.log(hi)// Error, hello is not defined

함수 스코프와 마찬가지로 블록바깥쪽에서 사용을 할 수가 없다!

 

단, 블록 스코프 내에서 var를 사용하게 되면 전역으로 사용된다!

 

 

 

참고

velog.io/@marcus/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%8A%A4%EC%BD%94%ED%94%84

'Dev > JavaScript' 카테고리의 다른 글

forEach, map, reduce  (0) 2021.04.29
template literal (ECMAScript2015)  (0) 2021.04.28
바벨 (babel)  (1) 2021.04.28
웹팩 플러그인  (0) 2021.04.27
웹팩 로더  (0) 2021.04.27
Comments