ES6导出覆盖功能

can*_*era 12 javascript ecmascript-6

如何导出此覆盖功能,以便导入模块可以检查是否已调用该函数?

// util.js
export function isPageload() {
  return (!!(isPageload = function() { return false; }));
}
Run Code Online (Sandbox Code Playgroud)

当我用Babel编译它时,我收到此错误:

Uncaught TypeError: (0 , _util2.default) is not a function
Run Code Online (Sandbox Code Playgroud)

这是ES5的等价物:

var isPageload = function() {
  return (!!(isPageload = function() { return false; }));
}

console.log(isPageload()); // true
console.log(isPageload()); // false
Run Code Online (Sandbox Code Playgroud)

log*_*yth 30

.default错误清楚地表明,你正在做的

import isPageload from 'foo';
Run Code Online (Sandbox Code Playgroud)

当你可能想要的时候

import {isPageload} from 'foo';
Run Code Online (Sandbox Code Playgroud)

以来

export function isPageload() {
Run Code Online (Sandbox Code Playgroud)

创建命名导出,而不是默认导出,默认导出实时绑定更新当前在Babel中不起作用.

然而,你对这个问题的处理似乎有点迂回.为什么不呢

let loaded = true;
export isPageLoaded(){
    let state = loaded;
    loaded = false;
    return loaded;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是黄金。谢谢。 (2认同)