brograming
var, let, const 본문
변수 선언은 var, let, const 키워드로 할 수 있다.
var : 블럭 밖에 선언 / 안에 선언한 차이 없음. 중복 선언 가능. 재할당 가능
함수 외부에서 선언될 때의 범위는 전역함수. 함수 내에서 전언될 때는 함수 범위로 지정됨.
let : 블럭 안에서 선언하면 블럭 내에서만 사용 가능. 중복 선언 불가. 재할당 가능
const : 상수. 반드시 선언과 초기화를 동시에 진행해야 한다. 중복 선언 불가. 재할당 불가. 원시값은 불가능하지만, 객체는 가능하다.
const는 재할당을 금지할 뿐, '불변'을 의미하지 않는다.
var의 범위
var test = "hello"; // 전역변수
function greeting() {
var test2 = "hi"; // 지역변수
console.log(test2); // hi
}
greeting(); // hi
console.log(test2); // error. test2 is not defined
▶ 함수 내에서 선언된 변수(지역변수)는 함수 내에서만 유효하며 함수 외부에서는 참조 할 수 없다.
test2는 greetinh()함수 밖에서 사용할 수 없기 때문에 에러 발생
let, const의 범위
function func() {
if (true) {
let a = 5;
console.log(a); // 5
}
console.log(a); // ReferenceError : a is not defined
}
console.log(a); // ReferenceError : a is not defined
▶ 모든 코드 블록 내부에서 선언된 변수는 코드 블럭 내에서만 유효하다. 코드 블록 외부에서는 참조 할 수 없다.
코드 블럭 내부에서 선언한 변수는 지역 변수로 취급됨.
var 와 let의 차이
var a = 1 let a = 1
if (true) { if (true) {
var a = 5 var a = 5
} }
console.log(a) // output : 5 console.log(a) // output : 1
▶ let 키워드로 선언하면 if 문 안에 있는 것은 지역 스코프를 가져 전역에서 console을 출력할 경우, 전역에 있는 a가 결과 값으로 출력된다.
const키워드도 let 키워드와 동일하게 동작한다.
var 키워드로 선언 된 a는 5로 재정의되었다.
var greeting = "hello"; let greeting = "hello";
console.log(greeting); // hello console.log(greeting); // hello
var greeting = "hi"; let greeting = "hi";
console.log(greeting); // hi console.log(greeting); // error. 'greeting' has already been declared
greeting = "yo";
console.log(greeting); // yo
▶ var와 다르게 let은 해당 변수가 이미 선언되었다는 에러 메세지가 출력된다.(중복선언 불가)
let은 greeting = "yo"와 같이 변수 선언 및 초괴화 이후 반복해서 다른 값을 재할당 할 수는 있다.
hoisting : 소스코드를 한 줄씩 순차적으로 실행하기 앞서, 변수 선언을 포함한 모든 선언문( ex. 변수 선언문, 함수 선언문 등)을 찾아내 먼저 실행한다. 변수 선언이 어디에 있든 상관없이 다른 코드보다 먼저 실행 된다. 변수 선언 뿐만 아니라 var, let, const, function, function*, class 키워드를 사용해 선언한 모든 식별자( 변수, 함수, 클래스 등)이 hoisting된다.
'[JAVASCRIPT]' 카테고리의 다른 글
| JSON.parse() (0) | 2023.04.18 |
|---|---|
| event handler (0) | 2023.03.25 |
| 버튼 추가, 제거 (getElementById, appendChild) (0) | 2023.03.25 |
| alert 알림창(경고창) 띄우기 (0) | 2023.03.22 |