자바스크립트에서 변수를 선언할 때 var와 let, 그리고 const를 사용합니다.
var
자바스크립트의 과거의 변수 선언 방식으로 중복선언이 가능합니다.
그리고 값을 선언하기 전에 값을 할당할 수 있습니다. 이것을 var hoisting 이라고 하는데
hoisting(n.끌어 올리기)은 어디서 선언했던지 상관없이 항상 선언을 최상단으로 끌어 올려주는 것을 말합니다.
정확한 에러를 파악하기 힘들고 값이 바뀔 우려 때문에 var는 가급적 사용하지 않도록 권장하고 있습니다.
var name = “goopy”
console.log(name) //goopy
var name = “pooh”
console.log(name) //pooh
let
변수 중복선언할 수 없고 재할당은 가능합니다. (read/write)
let name = "goopy"
console.log(name) //goopy
let name = "pooh"
console.log(name) //SyntaxError: Identifier 'name' has already been declared
name = "piglet"
console.log(name) //piglet
const(constant)
상수 즉, 변하지 않는 일정한 값을 만들 때 사용합니다. 변수 중복선언과 재할당이 불가능합니다. (read only)
const name = "goopy"
console.log(name) //goopy
const name = "pooh"
console.log(name) //SyntaxError: Identifier 'name' has already been declared
name = "piglet"
console.log(name) //TypeError: Assignment to constant variable.
**const로 선언된 변수는 값이 바뀌면 안되기 때문에
const obj = {
name: "goopy"
};
obj = {
name: "pooh"
};
//새로운 메모리 주소(reference)로 수정을 시도하기 때문에 obj를 재할당하려고 하면 에러가 발생한다.
obj.name = "pooh";
//객체 내부의 프로퍼티에 접근해서 수정 가능하다.
Block scope
블럭 안에서 변수를 선언하면 블럭 밖에서는 더 이상 블럭 안의 값을 볼 수 없다.
반대로 문서에 바로 정의해서 쓰는 것을 global scope라고 하는데 어느 곳(블럭 안이나 밖)에서나 접근할 수 있어 출력할 수 있다.
global 변수들은 어플리케이션이 실행되는 순간부터 끝날 때까지 항상 메모리에 탑재되어 있기 때문에 최소한으로, 필요한 곳에서만 쓰는 것을 권장한다.
참고로 var는 block scope도 무시하기 때문에 위험부담이 아주 크다.
{
age = 4;
var age;
}
console.log(age); //4
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] String과 Number의 조합과 변환 (0) | 2023.07.12 |
---|---|
[JavaScript] 매개변수(parameter)와 인자(argument) (0) | 2023.07.11 |
[JavaScript] 함수 데이터 반환으로 price tax값 구하기 (0) | 2023.07.09 |
[JavaScript] function(함수) (0) | 2023.07.09 |
[JavaScript] Object(객체) 추가, 수정, 삭제, 복제, 접근 (0) | 2023.07.07 |