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
- 디스크블록할당
- 자바문자열구분
- 머신러닝
- national instruments
- 딥러닝
- attribute
- 컴파일시스템
- 해시
- Entity
- 블록체인강의
- K-MOOC 단국대학교 홍보단
- 자바입력받기
- 자바스크립트
- Node
- 오블완
- 단국대학교 k-mooc
- CSS 기초
- html기초
- 우선순위큐
- 블록체인 강의
- biginteger사용법
- stringreader
- 2차원배열정렬
- StringBuilder
- K-MOOC
- 티스토리챌린지
- StringTokenizer
- 시스템프로그래밍
- 블록체인
- 혁신의기술2:신뢰의미래 블록체인을 만나다
Archives
- Today
- Total
열정 실천
[JavaScript] 렉시컬 스코핑 (Lexical Scoping) 본문
728x90
📌 렉시컬 스코핑 (Lexical Scoping) 이란??
렉시컬 스코핑은 동적 스코핑과 반대되는 정적 스코핑으로 쉽게 이해하면 된다.
함수가 호출되는 시점에 따라 상위 스코프를 결정하는 동적 스코핑과 달리
렉시컬 스코핑은 함수가 선언되는 시점에 상위 스코프를 결정한다.
다른 많은 프로그래밍 언어들처럼 자바스크립트도 이 '렉시컬 스코핑'을 따른다.
다음 코드를 보자
const name = "KOO"
function print1(){
const name = "ROSS"
console.log(name);
print2(); // 함수 호출 위치
}
function print2(){ //함수 선언 위치
console.log(name);
}
print1();
만약 이 렉시컬 스코핑을 따른다면 결과 어떻게 될까???
상위 스코프는 '함수가 선언되는 시점'에 결정된다.
👀
결과 : 'Ross', 'Koo'
print1의 console.log( )의 값은 당연하다. print1 함수 내부의 name에 접근하고 있기 때문이다.
print2의 함수 선언 위치는 "전역"이다. 때문에 상위스코프는 전역이다.
따라서 print2 / console.log의 name은 전역에 선언된 "KOO"이다.
동일한 코드에서 만약 렉시컬 스코핑이 아닌 동적 스코핑(Dynamic Scoping)을 따른다면??
결과 : 'Ross', 'Ross'
print2의 함수 호출 위치는 "print1 함수 내부"이다. 때문에 상위스코프는 print1 함수이다.
따라서 print2 / console.log의 name은 print1 함수 내부에 선언된 "ROSS"이다.
728x90
'개발 공부 > JS' 카테고리의 다른 글
[JavaScript] var, let, const 차이 (0) | 2023.07.21 |
---|---|
[JavaScript] var를 쓰지 않는 이유 - 함수스코프, 호이스팅 (0) | 2023.07.19 |
[JavaScript] 스코프(Scope)란? - 함수 스코프 vs 블록 스코프 (0) | 2023.07.19 |
[JavaScript] JSON - JSON.parse, JSON.stringify (0) | 2023.05.18 |
[JavaScript] Promise (0) | 2023.05.18 |