Javascript ES6 export const vs export let
Javascript ES6 export const vs export let
假设我有一个要导出的变量。
和 的区别是什么?export const a = 1;
和
export let a = 1;
我理解const
和let
之间的区别,但是当你导出它们时,有什么区别?
在ES6中,import
是导出值的实时只读视图。因此,当您执行import a from "somemodule";
时,无论您如何在模块中声明a
,都不能将其赋值给a
。
//------ 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
我认为一旦你导入了它,行为是一样的(在你的变量将在源文件外使用的地方)。
相关文章:
- 带有let的JS/EECMAScript6私有字段的模式
- JavaScript中let和var之间的区别
- let与var的性能
- 对于grunt构建中的(let.of)错误
- MongoDB Querying: Order & Export Results
- Javascript “let” on JSFiddle
- Do let语句在全局对象上创建属性
- ES6/JavaScript-声明不带let/const的变量
- asp validationExpression中用于验证表达式的代码,使我们能够避免单词末尾的任何let(d)
- Highcharts - export to base64
- 函数在自己的循环中使用 i,以及一个子函数循环 - var 的行为类似于 let
- 其他人可以在他们的 Node.js REPL 中使用 let 语句吗?
- 节点.js是否支持“let”语句
- P5js SVG Export
- Excel VBA Javascript Export
- AngularJS ng-grid Export to Excel for selectedItems
- 如果我用 let 声明它,我是否需要删除 javascript 中的对象
- 没有var,let或const的对象解构
- IE javascript 书签let PDF 链接不起作用
- Javascript ES6 export const vs export let