2015-09-26 58 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