Javascript ES6 내보내기 const 대 내보내기 let


149

내보낼 변수가 있다고 가정 해 봅시다. 차이점은 무엇입니까

export const a = 1;

vs

export let a = 1;

나는 사이의 차이 이해 constlet,하지만 당신이 그들을 내보낼 때, 차이점은 무엇입니까?


export키워드 세부 사항은 여기 . 현재 모든 웹 브라우저에서 기본적으로 지원되지 않습니다.
RBT

답변:


247

ES6에서 imports는 내 보낸 값에 대한 실시간 읽기 전용보기입니다. 결과적으로 수행 할 때 모듈에서 선언 한 방식에 관계없이 import a from "somemodule";할당 할 수 없습니다 .aa

그러나 가져온 변수는 라이브 뷰이므로 내보내기에서 "원시"내 보낸 변수에 따라 변경됩니다. 다음 코드를 고려하십시오 (아래 참조 기사에서 차용).

//------ lib.js ------
export let counter = 3;
export function incCounter() {
    counter++;
}

//------ main1.js ------
import { counter, incCounter } from './lib';

// The imported value `counter` is live
console.log(counter); // 3
incCounter();
console.log(counter); // 4

// The imported value can’t be changed
counter++; // TypeError

보시다시피, 차이점은 실제로 lib.js아닙니다 main1.js.


요약:

  • import모듈에서 해당 변수를 선언하는 방법에 관계없이 -ed 변수에 할당 할 수 없습니다 .
  • 전통적인 let-vs- const의미는 모듈에서 선언 된 변수에 적용됩니다.
    • 변수가 선언 const되면 어디에서나 재 할당하거나 리바운드 할 수 없습니다.
    • 변수가 선언 let되면 모듈에서만 재 할당 할 수 있습니다 (사용자는 제외). 변경되면 import-ed 변수가 그에 따라 변경됩니다.

참조 : http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values


2

일단 가져온 후에는 동작이 동일합니다 (변수가 소스 파일 외부에서 사용되는 곳).

유일한 차이점은이 파일이 끝나기 전에 파일을 다시 할당하려는 경우입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.