1. var / let /const 차이점
- JavaScript에서는 var, let, const를 이용해서 변수를 선언할 수 있다.
- var
- ES5까지 var 키워드를 통해서만 변수 선언 가능.
- var를 사용해도 되지만, 최신 버전에 맞는 문법(let, const)을 사용하는 것이 좋다.
- 중복 선언 가능.
var name = 'javascript';
console.log(name); // javascript
var name = 'javascript2';
console.log(name); // javascript2
//동일한 이름 'name'으로 여러 번 중복해서 선언 가능
- Function-level scope로 함수 내에서 선언된 변수는 함수 내에서만 유효, 함수 외부에서는 전역 변수로 취급.
- Hoisting(변수 선언들을 모두 유효 범위의 최상단으로 끌어올려 선언) 시 'undefined'로 변수 초기화
- let
- var과 다르게 중복 선언 불가능.
- 변수 재할당은 가능.
- Block-level scope로 정해진 코드 블록 내부에서만 유효.
function func() {
if (1) {
var a = 5;
console.log(a); // 5
}
console.log(a); // 5(function-level scope)
}
//
function func() {
if (1) {
let a = 5;
console.log(a); // 5
}
console.log(a); // ReferenceError: a is not defined(Block-level scope)
}
- Hoisting 시 변수 초기화 X
- const
- let과 마찬가지로 중복 선언 불가능.
- const 키워드를 사용한 변수 재할당 불가능.(constant 역할)
- Block-level scope로 정해진 코드 블록 내부에서만 유효.
- Hoisting 시 변수 초기화 X
2. Data Type
2-1. JavaScript Data types
✔️ Primitive Type:(변수에 실제 데이터 값 저장)
- String
- Number
- Boolean
- Undefined
- Null
- Symbol
✔️ Reference Type:(변수에 할당 시 데이터에 대한 메모리 주소 값 저장)
- object
- array
- function
2-2. undefined vs null
undefined
- 값이 정의되지 않은 데이터의 타입
- 선언한 후에 값을 할당하지 않은 변수나
- 값이 주어지지 않은 인수
- 함수가 값을 return하지 않았을 때 자동 할당
null
- 어떤 값이 의도적으로 비어있음을 표현.
type of(null)
은"object"
로 나온다.- 해당 변수가 어떤 객체도 가리키고 있지 않다는 것을 의미
- undefined == null 은 true
반응형