Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript es6导入,导出默认值,_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript es6导入,导出默认值,

Javascript es6导入,导出默认值,,javascript,ecmascript-6,Javascript,Ecmascript 6,显示以下代码段 const persistedReducer = persistReducer(persistConfig, rootReducer) export default () => { let store = createStore(persistedReducer) let persistor = persistStore(store) return { store, persistor } } 你可以这样做,两者的区别是什么 const persistedR

显示以下代码段

const persistedReducer = persistReducer(persistConfig, rootReducer)

export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}
你可以这样做,两者的区别是什么

const persistedReducer = persistReducer(persistConfig, rootReducer)

let store = createStore(persistedReducer)
let persistor = persistStore(store)
export { store, persistor }
  • 编辑

更重要的是,为什么要使用第一种形式而不是第二种形式?

第一个代码片段正在导出一个
函数
,该函数返回一个
对象
第二个代码段直接返回一个
对象


导入第一个代码段时,需要调用函数以获取对象。同时,您可以直接从第二个代码段导入对象。

vi a.mjs
然后编写:

export default () => {
  let store = 'createStore';
  let persistor = 'persistStore';
  return { store, persistor }
}

let store = 'createStore';
let persistor = 'persistStore';
export { store, persistor }
import a from './a.mjs';
import * as $a from './a.mjs';
import { store, persistor } from './a.mjs';

console.log('export default function:', a);
console.log('export object:', $a);
console.log('export object.default:', $a.default);
console.log('export { store, persistor }:', store, persistor);
vi b.mjs
然后写:

export default () => {
  let store = 'createStore';
  let persistor = 'persistStore';
  return { store, persistor }
}

let store = 'createStore';
let persistor = 'persistStore';
export { store, persistor }
import a from './a.mjs';
import * as $a from './a.mjs';
import { store, persistor } from './a.mjs';

console.log('export default function:', a);
console.log('export object:', $a);
console.log('export object.default:', $a.default);
console.log('export { store, persistor }:', store, persistor);
节点——实验模块b.mjs

你会得到这样的结果:

export default function: [Function: default]
export object: [Module] {
  default: [Function: default],
  persistor: 'persistStore',
  store: 'createStore'
}
export object.default: [Function: default]
export { store, persistor }: createStore persistStore

首先想到的是,第二个代码段是导出一个对象,第一个是函数OK,所以第一个代码段的目的是将'let store=createStore(persistedReducer)let persistor=persistStore(store)`的执行延迟到函数调用点(导出的函数)'?“let store=createStore(persistedReducer)let persistor=persistStore(store)`代码在这两种代码中只运行一次?在调用之前,导入时第一个代码不会运行。调用时,它会延迟执行
let store=createStore(persistedReducer)let persistor=persistStore(store)