Scope(스코프) 란 ?
- 번역하면 '범위'라는 뜻을 가집니다. 즉, 변수에 접근할 수 있는 범위 입니다.
- 그치만 단순 범위라고 정의하면 안됩니다. 선언하는 시점에 따라 값이 달라질수 있습니다.
- 동작 스코프, 레벨 스코프로 나눌수 있습니다.
스코프의 종류
1.동작
-정적(Static) 스코프
- Javascript는 정적 스코프 특성을 가집니다.
- 호출 스택과 관계없이 선언 시점에 스코프를 결정됩니다.
①레시컬(Lexical) 스코프
var name = '영수'; // 전역변수
function friend_1() {
var name = '영미';
second();
}
function friend_2() {
console.log(name);
}
friend_1(); // 영수
friend_2(); // 영수
//함수를 어디서 호출 하는지가 아니라 어디에 선언하는지에 따라 결정 됩니다.
-동적(Dynamic) 스코프
- 런타임 도중에 실행 컨택스트나 호출 컨낵스트에 의해 결정됩니다.
var name = '영수';
function friend(){
var name = '영미';
getName();
}
function getName(){
console.log(name);
//정적 : 영수
//동적 : 영미
}
friend();
//정적 : 함수 호출 할때가 아닌 선언할 때 스코프가 정해짐으로 영수가 출력됩니다.
//동적 : 런타임 도중에 실행 콘텍스트나 호출 콘텍스트에서 결정됨으로 영미가 출력됩니다.
2.레벨
-전역(Global) 스코프
- 변수를 선언하면 javascript 코드 어디에서든 사용할수 있습니다.(함수에 속하지 않고 {} 괄호안에 들어있지 않는다.)
- 변수명 충돌(중복)이 발생 할 수 있으므로 되도록이면 전역 변수 사용을 하지 않습니다.
- ES6문법인 const, let 사용하여 선언하면 충돌(중복) 시 에러가 납니다.
let name = '영수'
let name = '영미'
//Identifier 'name' has already been declared
-지역(Local) 스코프
- 특정 구역 내에서만 사용 가능 합니다.
- 함수 스코프와 블록 스코프가 있습니다.
①함수(Function) 스코프
- 함수 내 선언한 변수 접근은 해당 함수 안에서만 가능합니다.(외부에서 직접 변수 접근불가)
function friend(){
var name = '영수'; //지역변수
console.log(name);
}
friend(); //영수
console.log(name) //undefined
②블록(Block) 스코프
- ES6문법인 let, const 선언된 변수, 함수( {} 관호안에서만 변수 접근가능)들이 블록 스코프가 됩니다.
- 블록( {} )이 유효 범위 입니다.
function friend(name){
if(name){
let welcome = '나는 '+ name + ' 입니다.'
console.log(welcome); //나는 영수 입니다. (접근가능)
}
console.log(welcome); //undefined (접근불가)
}
friend('영수');
이 글이 도움이 되었다면 ♡(공감)를 눌러 주세요.
반응형
'Front End > Javascript' 카테고리의 다른 글
[JS] 스크롤 올릴때 헤더,네비 고정하기 (1) | 2022.03.22 |
---|---|
[JS] 이미지 비교 슬라이드(Image Comparison Slider) (0) | 2022.01.10 |
[JS] GSAP으로 Mouse cursor change(마우스 커서 변경하기) (0) | 2021.11.24 |
[JS] Lottie Animations (로티 애니메이션) 사용법 (2) | 2021.11.03 |
[JS] 웹(web), 모바일(mobile) 분기 스크립트 (0) | 2021.10.13 |