export
的方式导入导出,可以输出预期的结果
// test.js
export let counter = 3
export function incCounter() {
counter++;
}
// demo.html
import { counter, incCounter } from './test.js'
console.log(counter)//3
incCounter()
console.log(counter)//4 =>跟预期相符合
但是export defualt
输出的并不是预期结果
// test.js
let counter = 3
function incCounter() {
counter++;
}
export default { counter, incCounter }
//demo.html
import a from './test.js'
console.log(a.counter)//3
a.incCounter()
console.log(a.counter)//3 => ??? 不是说es6模块导出得是一个值的引用
export default 跟 命名export 一个最明显的差距就是这:export default 导出的是 value, 命名export 导出的是引用,因为 export default 要考虑兼容cjs的module.exports.
这个回答能很好解答你的疑问了:https://stackoverflow.com/a/67173273/7261556