ES6导出覆盖功能

ES6 Export Overwriting Function

本文关键字:功能 覆盖 ES6      更新时间:2023-09-26

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

// util.js
export function isPageload() {
  return (!!(isPageload = function() { return false; }));
}

当我用Babel编译它时,我得到这个错误:

Uncaught TypeError: (0 , _util2.default) is not a function

下面是ES5的等效代码:

var isPageload = function() {
  return (!!(isPageload = function() { return false; }));
}
console.log(isPageload()); // true
console.log(isPageload()); // false

错误中的.default清楚地表明您正在做

import isPageload from 'foo';

当你可能想要

import {isPageload} from 'foo';

以来
export function isPageload() {

创建一个命名的导出,而不是默认的导出,默认的导出动态绑定更新目前在Babel中不起作用。

然而,你解决这个问题的方法似乎有些迂回。
let loaded = true;
export isPageLoaded(){
    let state = loaded;
    loaded = false;
    return loaded;
}