+ npm install 이 안먹는다면 npm init -y 로 초기세팅 및 package.json 생성 후"type":"module", 을 추가 해주면 된다.
export ~이름 import {~이름} from ~경로 물론 as 키워드를 통해 별칭을 지정하는 것이 가능하다 import {~이름 as ~별칭} from ~ 경로 import * as ~별칭 from ~경로 를 통해 해당 경로의 모든 export 된 것들을 한번에 가지고 오는 것 또한 가능하다
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)
<실행 결과>
블록 리액트 글로벌 자바스크립트
블록 레벨 스코프
블록 레벨 스코프 이기 때문에 중첩된 내부 블록 에서는 사용가능하지만 외부 블록에서는 사용이 불가능한 모습