코어 자바스크립트에 대한 공부는 꾸준히 업로드 해왔던 자바스크립트로 하는 자료 구조와 알고리즘이라는 책을 통해 하고 있었지만 코드 스테이츠 프리 코스에서 배운 내용이 해당 책에 없다면 이것 또한 TIL을 해야 하지 않을까란 생각에 카테고리를 하나 만들었다!
제목에서도 알 수 있듯이 level 2 - 2에서 배운 내용은 스코프, 클로저, 객체 지향, 매개변수이다. 사실 클로저를 제외하면 엄청나게 생소한 내용은 아니었다. 학교를 다니며 C언어와 자바를 수강했기 때문에 자바의 클래스 문법에서 객체 지향 프로그래밍을 맛봤고 매개변수와 스코프는 어떠한 언어를 배우던 꼭 등장하는 개념이기 때문이다. 하지만 클로저라는 개념은 이번에 처음 알게 되었다.
말이 길어지니 일기장이 되가는 거 같다..
이만 각설하고 오늘의 TIL을 하러 가보자!
1. Scope
1 - 1) 스코프란 변수 접근 규칙에 따른 유효 범위이다.
1 - 2) 프로그래밍 언어마다 변수 접근 규칙이 다를 수도 있다.
1 - 3) 자바스크립트에서 스코프는 변수나 상수를 선언하는 키워드인 let, var, const에 따라 달라진다!
1 - 4) let, const : block scope
let과 const는 block scope이며 유효 범위는 {}이다.
1 - 5) var : function scope
var는 function scope이며 유효 범위는 가장 가까운 함수이다.
예시를 통해서 둘의 차이를 알아보자!
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
|
//block scope
function blockScope() {
if (true) {
let block = '이 변수는 if문 안에서 유효한 변수이다'
}
console.log(block)
}
blockScope()
//console.log로 block을 콘솔에 출력할 수 없다!
//block은 if문 안에서 선언과 할당이 되었기 때문에
//{}밖에서는 사용할 수 없다!
//function scope
function funcScope() {
if (true) {
var func = '이 변수는 가장 가까운 함수에서 유효한 변수이다'
}
console.log(func)
}
funcScope()
//이 변수는 가장 가까운 함수에서 유효한 변수이다
//func 변수는 var로 선언이 되어 해당 함수의 어디서든
//사용할 수 있는 변수가 되어 콘솔에 출력이 잘 된다.
|
cs |
단순하게 생각하면 함수 내에서 항상 접근할 수 있는 var키워드가 더 좋아보이지만 이는 오히려 코드의 가독성을 떨어트릴 수 있다.
따라서 변수 선언시에는 let 키워드를 사용하는 것을 추천한다.
*여기서 잠깐! 그렇다면 global scope & 전역 변수와 local scope & 지역 변수는 무엇인가?
global scope는 변수가 함수 바깥이나 중괄호 {} 바깥에 선언되었다면, 전역 스코프에 정의된다고 한다.
이 설명은 자바스크립트에만 유효하다. Node.js에서는 전역 스코프를 다르게 정의하므로 여기서는 다루지 않겠다.
반대로 local scope은 변수가 함수 안이나 중괄호 {}안에 선언된 경우이다.
따라서 위 예제의 두 변수는 모두 지역변수이고 그러한 변수는 외부에서는 사용할 수가 없게 된다!
그리고 두 변수는 함수 안에서 각각의 키워드에 따른 유효 범위를 또 가지게 되는 것이 block scope와 function scope인 것이다
scope에 대한 TIL은 여기까지!
'Programming Language > Javascript' 카테고리의 다른 글
Object Oriented Programming (0) | 2020.11.05 |
---|---|
Closure (0) | 2020.11.04 |
2020/09/30 - JS - 반복문 (0) | 2020.09.30 |
2020/09/18 - JS - 문자열과 관련 메소드 (0) | 2020.09.18 |
2020/09/17 - JS - 비교 연산자, 논리 연산자, 조건문, Truthy & Falsy (0) | 2020.09.17 |