하루에 한 문제
스코프 (ECMAScript 2015 ) 본문
스코프란?
스코프는 말그대로 범위이다. 스코프는 전역 스코프와 지역 스코프로 나뉜다
전역 스코프
전역 스코프는 변수가 함수 바깥이나 { } 바깥에서 선언되었다면, 전역스코프다.
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