2015-09-26 59 views
11

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

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

当我编译与巴贝尔,我得到这个错误:

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 
+0

'let loaded = false;'then'loaded = true;'在函数体中。 – zerkms

+0

更有针对性,为什么你会写这个?为什么在导出时需要相同的函数名称? –

+0

@ Mike'Pomax'Kamermans当前语法会将导出更新为返回false而不是原始函数的函数,就像ES5版本一样。 – loganfsmyth

回答

26

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

import isPageload from 'foo'; 

,当你可能想

import {isPageload} from 'foo'; 

因为

export function isPageload() { 

创建一个名为的出口,而不是默认的导出和默认出口活结合更新currently does not work in Babel

然而,你对这个问题的处理看起来有点迂回。为什么不做

+0

是的,丢失的括号没有办法。感谢您的解释。 – cantera

+1

这是黄金。谢谢。 – shongololo