본문 바로가기
교육후 개인공부/JavaScript

스코프 (미완성)

by 뭉지야 2024. 1. 2.
728x90

 

 

대부분의 프로그래밍 언어는 함수 몸체만이 아니라 모든코드 블록(if, for, while, try/catch 등)이 지역 스코프를 만든다.

이러한 특성을 블록 레벨 스코프라 한다.

 

var는 오로지 함수의 코드블록(함수 몸체)만을 지역 스코프로 인정한다!!!

이러한 특성을 함수 레벨 스코프라 한다.  

(함수만 지역스코프로 인정되는데, 함수아니고 if문이니까 x는 전역변수가 되고 의도치않게 변수값이 변경되는 부작용이 발생하는 거다.)

 

var키워드로 선언된 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정하지만 

let, const 키워드는 블록 레벨 스코프를 지원한다.

 

함수가 어디서 호출했는지에 따라 함수의 상위스코프를 결정한다 => 동적 스코프

함수가 어디서 정의했는지에 따라 함수의 상위스코프를 결정한다 => 정적 스코프, 렉시컬 스코프

 

자바스크립트를 비롯한 대부분의 프로그래밍 언어는 렉시컬 스코프를 따른다.

그러므로 함수가 어디서 호출했는지가 아니라 함수를 어디서 정의했는지에 따라 상위 스코프를 결정한다. 함수가 호출된 위치는 상위 스코프 결정에 어떠한 영향도 주지 않는다. 즉, 함수의 상위 스코프는 언제나 자신이 정의된 스코프다.

렉시컬스코프는 클로저와 깊은 관계가 있다.

 

 

 

 

 

728x90

'교육후 개인공부 > JavaScript' 카테고리의 다른 글

[JS] prototype, __proto__  (0) 2024.01.25
[JS] 객체의 키와 값에 접근하기  (0) 2024.01.25
[JS] 생성자함수, 클래스, 인스턴스  (0) 2024.01.25
[JS] 객체  (2) 2024.01.25