Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 반복문
- file upload
- Sequelize
- It
- 개발자
- 상속
- vue
- back-end
- 조건문
- props
- spring boot
- class
- restful api
- swagger
- SWIFT
- node.js
- react
- jpa
- 코틀린
- java
- kafka
- Producer
- AWS
- Nest.js
- Kotlin
- state
- 개발이 취미인 사람
- javascript
- front-end
- component
Archives
- Today
- Total
개발이 취미인 사람
[JavaScript] 스코프(Scope)개념 본문
반응형
- 개요
안녕하세요. 이번 시간에는 자바스크립트에서 스코프(Scope)에 대해 알아보겠습니다.
- 개념
Scope라는 단어를 우리나라 말로 해석하면 '범위'라는 뜻을 가지고 있습니다. 즉, 스코프(Scope)는 '변수에 접근할 수 있는 범위'라고 할 수 있습니다.
자바스크립트에서는 2가지 타입의 스코프가 있습니다. 전역(Global) 스코프와 지역(Local) 스코프
전역 스코프(Global Scope)는 말 그대로 전역에 선언되어 있어서 어느 곳에서든 해당 변수에 접근을 할 수 있습니다.
반대로 지역 스코프(Local Scope)는 말 그대로 해당 지역에서만 접근할 수 있어 지역을 벗어난 곳에서는 해당 변수에 접근할 수 없습니다.
/**
* @author Ryan
* @description 해당 javascript 파일 전체에 적용되는 전역 스코프
*/
//전역 스코프에 선언 "전역 변수"
const hi = "Hi"
function Hi() {
console.log(hi)
}
function Bye() {
/**
* @author Ryan
* @description Bye() 함수 지역 스코프
*/
//Bye 함수 안에 선언된 "지역 변수"
const bye = "Bye"
console.log(bye)
}
Hi()
Bye()
/**
* - 실행 결과 -
* Hi
* Bye
*/
위 hi 변수와 bye 변수에 차이는 변수를 참조할 수 있는 범위입니다.
만약 bye라는 변수를 Bye() 함수 밖에서 참조하면 "ReferenceError: bye is not defined" bye라는 변수가 선언되지 않았다는 Error가 발생합니다.
function Bye() {
/**
* @author Ryan
* @description Bye() 함수 지역 스코프
*/
//Bye 함수 안에 선언된 "지역 변수"
const bye = "Bye"
console.log(bye)
}
Bye()
console.log(bye)
/**
* - 실행 결과 -
/Users/sinhangug/ryan/dev/language/javascript.js:27
console.log(bye)
^
ReferenceError: bye is not defined
at Object.<anonymous> (/Users/sinhangug/ryan/dev/language/javascript.js:27:13)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
at internal/main/run_main_module.js:17:47
*/
전역 스코프와 지역 스코프에 차이는 변수에 접근할 수 있는 범위라고 생각하시면 됩니다.
이번 시간에는 스코프(Scope)에 대해 알아봤습니다. 어렵지 않은 개념이라고 생각합니다.
하지만 ECMAScript6(ES6)에서 let과 const가 생기면서 스코프에 대한 개념이 한층 더 추가됐습니다.
다음 시간에 더 자세히 알아보겠습니다.
'언어(Programming Language) > JavaScript' 카테고리의 다른 글
[JavaScript] 호이스팅(Hoisting)과 시간상 사각지대(Temporal Dead Zone, TDZ) (1) | 2022.01.31 |
---|---|
[JavaScript] 함수 스코프(function-scope)와 블록 스코프(block-scope) (0) | 2022.01.30 |
[JavaScript] 배열(Array) 개념 및 사용법 (0) | 2022.01.01 |
[JavaScript] 객체(Object) 개념 및 사용법 (0) | 2021.12.31 |
[JavaScript] 함수 표현식&선언식, 화살표 함수(arrow function) (0) | 2021.12.29 |