타입 선언

var: 권장 하지는 않지만 중복 된 이름으로 값을 변경 할 수 있는 변수 선언이 가능 (잘 사용 되지 않음)
var 변수의 영역은 블록 안으로 제한되지 않음 (함수 레벨 스코프)

var topic = "자바스크립트"

// JavaScript에서 빈 문자열 (""), null, undefined, 0, NaN, false 외의 모든 값은 truthy(참으로 간주)로 평가
if (topic){
  var topic = "리액트"
  console.log('블록',topic)
}
console.log('글로벌',topic)

<실행 결과>

블록 리액트
글로벌 리액트

함수 레벨 스코프

블록 안에서 선언되어도 블록 바깥에서 사용할 수 있는 모습

 

(기존 var에서 새로 추가 된 것)

let: 값을 변경 할 수 있는 변수 선언시 사용 (variable values) - 새로운 var이라 생각
var과 다른 점은 중복 선언이 불가능 하다는 것
let을 쓰면 구문적 변수 영역 규칙을 적용할 수 있음 
const: 값을 변경 할 수 없는 상수 선언시 사용 (constant values)

let과 const 는 재선언과 호이스팅을 허용하지 않음 (블록 레벨 스코프)

var topic = "자바스크립트"

// JavaScript에서 빈 문자열 (""), null, undefined, 0, NaN, false 외의 모든 값은 truthy(참으로 간주)로 평가
if (topic){
  let topic = "리액트"
  console.log('블록',topic)
}
console.log('글로벌',topic)

<실행 결과>

블록 리액트
글로벌 자바스크립트

블록 레벨 스코프

블록 레벨 스코프 이기 때문에 중첩된 내부 블록 에서는 사용가능하지만 외부 블록에서는 사용이 불가능한 모습

+ Recent posts