stavo dando un'occhiata al codice sorgente qui: http://js-dos.com/games/doom2.exe.html e ho notato un paio di cose:Qual è lo scopo di questa condizione di valutazione?
if (typeof Module === 'undefined')
{
Module = eval('(function() {try { return Module || {} } catch(e) { return {} }})()');
}
- La funzione del modulo viene definito con un tag script inline
- E 'poi dichiarato di nuovo con
var
in un'altra linea tag, questa volta controlla se il modulo esiste.
La mia domanda: Qual è il punto di dichiarare Modulo con una funzione che esegue il richiamo di auto se si cercherà solo per tornare di nuovo il modulo? Non è già stato provato che non esiste? Perché non dichiarare semplicemente il modulo come {}
?
Questo codice è in github nel progetto emscripten. È stato aggiunto in questo commit: https://github.com/kripken/emscripten/commit/22d510338239c1cf33136392c77a9b3d7d2ce2bc Si sono spostati dalla dichiarazione esplicita all'istruzione eval, ma il messaggio di commit non è chiaro perché! Ho aggiunto emscripten come tag, quindi qualcuno del progetto, o che lo conosce bene, potrebbe individuarlo ed essere in grado di aiutare. – sifriday