일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Linux cd
- JavaScript 실행 디버깅
- EC2 Apache2
- javascript scope
- HTTP Web Server
- Linux apt
- 서버의 서비스 방식
- AWS EC2 서버 만들기
- Linux 디렉터리 역할
- Linux apt-get
- Linux cat
- Linux 디렉터리 구조
- Linux 파일 관리 명령어
- linux foreground
- EC2 HTTP 호스팅
- Linux rmdir
- 자바스크립트 런타임
- Linux oh my zsh
- EC2 zsh
- linux background
- Linux mkdir
- EC2 oh my zsh
- Linux 디렉터리 명령어
- javascript 정렬
- Linux pwd
- JavaScript EventLoop
- 자바스크립트 이벤트 루프
- Logback
- Navigation Pattern
- Linux ls
Archives
- Today
- Total
HyunJun 기술 블로그
자바스크립트는 느슨한 타입의 동적 언어, var, let, const / scope 본문
728x90
반응형
1. 느슨한 타입의 동적 언어(loosely typed, dynmaic)
JavaScript의 변수는 어떤 특정한 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능하다.
- 첫 개발을 C -> 자바로 시작했던 저로서는 자바스크립트를 처음 접했을 때 쉽다고 느끼기도 했지만 헷갈리는 부분이 많았습니다.
- 각자의 장단점이 있겠지만 느슨한 타입의 언어는 처음에 배우기 쉽고, 타입에 자유로운 장점이 있지만 때로는 타입이 지정되어 있지 않기 때문에 헷갈리거나, 구현이 잘 안되는 부분도 존재합니다.
- 추가로 대표적인 느슨한 타입의 동적 언어로서는 Python이 있습니다.
2. 변수
JavaScript에서의 변수는 var, let, const를 사용합니다.
변수 선언: 변수를 정의하는 것을 의미합니다.
var variable;
변수 할당: 변수가 선언된 후 대입 연산자(=)를 통해 값을 할당해 주는 것을 의미합니다.
var variable;
variable = 'test';
변수 초기화: 변수를 선언함과 동시에 할당하는 것을 의미합니다.
var variable = 'test';
3. var, let, const 차이점
var | let | const | |
선언 | 중복 선언 가능 | 중복 선언 불가 | 중복 선언 불가 |
할당 | 재할당 가능 | 재할당 가능 | 재할당 불가 |
Scope | Function Level Scope | Block Level Scope | Block Level Scope |
결론적으로 개발자 입장에서 자바스크립트의 변수 선언은 타입 지정보다는 변수의 범위만 지정해 주면 됩니다.
위의 선언, 할당, Scope가 무엇을 의미하는지 코드로 확인해 보도록 할게요.
var
// var : 중복 선언 가능, 재할당 가능
// 선언
var v = 'i am var1';
console.log(v);
// 중복 선언 가능
var v = 'i am var2';
console.log(v);
// 재할당 가능
v = 'i am var3';
console.log(v)
// Scope
// var : Function Level Scope
function func() {
if (true) {
var a = 'a';
console.log(a);
}
console.log(a);
}
func();
// Scope에서 벗어났으므로, a가 정의되지 않음.
// console.log(a);
let
// let : 중복 선언 불가, 재할당 가능
// 선언
let l = 'i am let1';
console.log(l);
// 중복 선언 불가
// let l = 'i am let2';
// console.log(l);
// 재할당 가능
l = 'i am let3';
console.log(l)
// Scope
// let : Block Level Scope
function func2(){
if (true) {
let b = 'b';
console.log(b);
}
// Scope에서 벗어났으므로, b가 정의되지 않음.
// console.log(b);
}
func2();
const
// const : 중복 선언 불가, 재할당 불가
const c = 'i am const1';
console.log(c)
// 중복 선언 불가
// const c = 'i am const2';
// console.log(c);
// 재할당 불가
// c = 'i am const3';
// console.log(c);
// Scope
// const : Block Level Scope
function func3(){
if (true) {
let blockC = 'c';
console.log(blockC);
}
// Scope에서 벗어났으므로, c가 정의되지 않음.
// console.log(blockC);
}
func3();
4. 결론
변수를 생성할 때 재할당이 필요 없다면 const를 사용한다. 재할당이 필요하면 let을 사용하지만 변수의 Scope를 최대한 좁게 만들어서 사용하는 것이 좋다.
728x90
반응형
Comments