Javascript ES6 export const 与 export let
Javascript ES6 export const vs export let
假设我有一个要导出的变量。
有什么区别
export const a = 1;
对
export let a = 1;
我明白const
和let
之间的区别,但是当你导出它们时,有什么区别?
我认为一旦你导入它,行为是一样的(在你的变量将在源文件之外使用的地方)。
唯一的区别是,如果您尝试在这个文件结束之前重新分配它。
在 ES6 中,import
s 是导出值的实时只读视图。因此,当您执行 import a from "somemodule";
时,无论您如何在模块中声明 a
,都无法分配给 a
。
但是,由于导入的变量是 实时 视图,它们会根据导出中的 "raw" 导出变量而变化。考虑以下代码(从下面的参考文章中借用):
//------ 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 变量会相应更改。
假设我有一个要导出的变量。
有什么区别export const a = 1;
对
export let a = 1;
我明白const
和let
之间的区别,但是当你导出它们时,有什么区别?
我认为一旦你导入它,行为是一样的(在你的变量将在源文件之外使用的地方)。
唯一的区别是,如果您尝试在这个文件结束之前重新分配它。
在 ES6 中,import
s 是导出值的实时只读视图。因此,当您执行 import a from "somemodule";
时,无论您如何在模块中声明 a
,都无法分配给 a
。
但是,由于导入的变量是 实时 视图,它们会根据导出中的 "raw" 导出变量而变化。考虑以下代码(从下面的参考文章中借用):
//------ 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 变量会相应更改。
- 如果声明了变量