728x90
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다.
1.스코프(Scope)
스코프는 유효범위를 뜻한다.
전역 변수:어디에든 참조할 수 있다.
지역 변수:그 지역과 그 지역의 하부 지역에서만 참조할 수 있다.
2.자바스크립트 스코프
대부분의 언어는 {} 내에서 유효한 블록레벨 스코프를 사용한다.(자바스크립트에서는 let keyword로 사용가능)
하지만 자바스크립트는 기본적으로 함수 레벨 스코프를 따른다.
함수 코드 블록 내에서 선언된 변수는 함수코드 블록내에서만 참조할수있다.
때문에 블록내에서 선언되었다고 해도 함수밖에서 선언된 변수는 모두 전역 스코프를 가진다.
function Human(){
var x=3;
document.write(x)
}
Human()
//document.write(x)
3.전역 스코프
var 키워드로 선언한 전역 변수이다.
전역 객체 window의 프로퍼티이다.
var y;
function Human(){
var x=3;
y=5
document.write(x+"<br>")
}
Human()
//document.write(x)
document.write(y)
4.중첩 스코프
중첩 스코프일경우 가장 인접한 지역을 우선하여 참조한다.
var z=5;
function test(){
var z=10;
document.write(z+"<br>")
}
test()
document.write(z+"<br>")
5.렉시컬 스코프
함수를 어디에서 호출하는지가 아니라 어디에 선언하였는지에 따라 스코프가 결정되는것을 의미한다.
var z=5;
function test(){
document.write(z+"<br>")
}
function test2(){
var z=100;
test()
}
test2()
//출력
5
6.암묵적 전역
아래처럼 함수 내부에서 선언하지 않은 식별자로 하게되면 window.q=1001로 해석하여 암묵적으로 전역스코프로 작동하게된다.
var q=1;
function test3(){
q=1001;
}
test3()
document.write(q)
🎈참고자료
https://poiemaweb.com/js-scope
728x90
'FrontEnd > JavaScript' 카테고리의 다른 글
[JavaScript] strict mode (0) | 2024.06.04 |
---|---|
[JavaScript] 프로토타입(Prototype) (0) | 2024.06.04 |
[JavaScript] 타입체크 (0) | 2024.06.03 |