为什么这段代码会重演?

时间:2015-11-27 12:21:54

标签: javascript ecmascript-6

上找到以下代码段

http://www.jchapron.com/2015/08/14/getting-started-with-redux/

import React from 'react';  
import { createStore as initialCreateStore, compose } from 'redux';

export let createStore = initialCreateStore;

if (__DEV__) {  
  createStore = compose(
    require('redux-devtools').devTools(),
    require('redux-devtools').persistState(
      window.location.href.match(/[?&]debug_session=([^&]+)\b/)
    ),
    createStore
  );

为什么作者将initialCreateStore导入为createStore,然后将相同的结果重新分配给createStore

从一开始就导入createStore做同样的事情吗?

1 个答案:

答案 0 :(得分:0)

  

为什么作者将initialCreateStore导入createStore

他没有,反之亦然。 import正在模块范围内创建initialCreateStore绑定。

  

为什么然后他将同样的结果重新分配给createStore

因为冗长。他希望明确表示它只是导出绑定的初始值。

  

从一开始就导入createStore做同样的事情吗?

不,因为在ES6中导入的绑定是“不可变的” - 它们可以更改(如果它们在导出它们的模块中发生更改),但它们无法在导入模块中分配。
但是,如果createStore存在,作者会想要用自己的__DEV__覆盖,所以他确实需要用export let createStore声明自己的绑定。