2024. 2. 19. 17:47ㆍ자바스크립트
var
중복 선언o (마지막에 할당된 값)
var a; ( 선언만 한경우 :초기화x) 일경우 선언문이 무시됨(오류x)
var로 변수 선언시 함수 내부에서만 유효("지역변수 취급") if,for문 에서는 "전역 변수"로 취급
변수 호이스팅 발생
console.log(a); // undefined
var a = 10;
console.log(a); // 10
let,const
중복 선언x (에러)
함수내부,if,for문 모두 "지역변수" 취급
변수 호이스팅 발생 (다른방식)
var , let
값의 "재할당" 가능 (중복선언과는 다름)
var a= 10;
a=20;
console.log(a) //20
const
값의 재할당 불가 ( 처음 선언시 초기값 필수) , 상수취급
선언과 동시에 초기화 해야함
블록레벨 스코프
요약
var 는 함수 내부에 선언된 변수만 지역 변수로 인정 함수 레벨 스코프 , 중복선언o 호이스팅o , 값 재할당 가능
let 는 블록 내부에서 선언된 변수 모두 지역변수로 인정 ,블록 레벨 스코프 , 중복선언x,호이스팅o, 값 재할당 가능
const 는 블록 내부에서 선언된 변수 모두 지역변수로 인정 ,블록 레벨 스코프 , 중복선언x,호이스팅o ,값 재할당 불가
값을선언과 동시에 초기화 해줘야함
var, let, const
중복 선언 가능 여부
var : 중복 선언o (초기화)
let,const : 중복 선언 불가
재할당 가능 여부
var, let : 값의 재할당이 가능
const : 값의 재할당 불가
var 또는 let과 는 다르게 , const 선언에서는 반드시 값을 선언과 동시에 정의
변수 스코프 유효범위
var : 함수 내부에 선언된 변수만 지역 변수로 인정하는 함수 레벨 스코프
let, const : 모든 블록 내부에서 선언된 변수까지 지역변수로 인정하는 블록 레벨 스코프
변수 호이스팅 방식
var: 변수 호이스팅이 발생 = undefine 값
let, const: 변수 호이스팅이 발생 - > (다른방식) : 값이 들어가지 않는다.(초기화전에는 참조가)
전역객체 프로퍼티
var : var로 선언된 변수는 전역객체(브라우저 환경의 경우 window)의 프로퍼티다.
let, const : let/const 로 선언된 변수는 전역객체 프로퍼티가 아니다.
'자바스크립트' 카테고리의 다른 글
[자바스크립트] 익명 함수/ 화살표 함수/선언적 함(호이스팅,콜백) (0) | 2024.02.15 |
---|---|
[자바스크립트] classList 속성 (0) | 2024.02.06 |
[자바스크립트] rest 파라미터 (0) | 2024.02.05 |
[자바스크립트] 스프레드 연산자/얕은복사/깊은복사 (1) | 2024.01.31 |
[자바 스크립트 ] 동기 / 비동기 (Promise 객체) (0) | 2024.01.31 |