2015-09-26 23 views
11

Come posso esportare questa funzione di sovrascrittura in modo che un modulo di importazione possa verificare se la funzione è stata richiamata?ES6 Funzione di sovrascrittura esportazione

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

Quando compilo che con Babel, ottengo questo errore:

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

Qui è l'equivalente ES5:

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

console.log(isPageload()); // true 
console.log(isPageload()); // false 
+0

'let loaded = false;' then 'loaded = true;' nel corpo della funzione. – zerkms

+0

più pertinentemente, perché dovresti scrivere questo? Perché hai bisogno dello stesso nome di funzione nell'esportazione? –

+0

@ Mike'Pomax'Kamermans La sintassi corrente aggiornerebbe l'esportazione in una funzione che restituisce false invece della funzione originale, proprio come nella versione ES5. – loganfsmyth

risposta

26

Il .default nell'errore chiarisce che siete

import isPageload from 'foo'; 

quando probabilmente si vuole

import {isPageload} from 'foo'; 

dal

export function isPageload() { 

crea un export di nome, non un export di default, e l'esportazione di default dal vivo vincolante l'aggiornamento currently does not work in Babel.

Tuttavia, il tuo approccio a questo problema sembra piuttosto tondo. Perché non fare

+0

Sì, le parentesi mancanti hanno fatto il trucco. Grazie per aver spiegato. – cantera

+1

Questo è oro. Grazie. – shongololo

Problemi correlati