[javascript] Javascript ES6 내보내기 const 대 내보내기 let

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

export const a = 1;

vs

export let a = 1;

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



답변

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


답변

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

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


답변