2013-06-12 14 views
7

Quindi mi sono divertito con il Node.js REPL e la libreria Underscore quando ho notato qualcosa di molto strano. Se I require("underscore"), la variabile _ è impostata globalmente (ovviamente). Quindi quando tento di eseguire un comando semplice come console.log(_.isEmpty) stampa [Function] (di nuovo, ovviamente). Tuttavia, dopo aver eseguito console.log(_) subito dopo, stampa [Function] perché la variabile _ è stata impostata su _.isEmpty.Nel REPL Node.js, perché succede?

Perché fa questo? Se eseguo lo stesso codice da un file js questo non succede. Si tratta di una cosa normale di Node o si tratta di un bug totale?

FYI: Nodo v0.10.10

+0

Vedi anche [Utilizzando il modulo di sottolineatura con Node.js] (http://stackoverflow.com/q/5691901/1048572) – Bergi

risposta

13

REPL del nodo imposta sempre _ al risultato dell'ultima riga.

> 2 
2 
> _ 
2 
> 2+2 
4 
> _ 
4 
> 

È necessario utilizzare un identificatore diverso:

var u = require("underscore"); 
u.isEmpty 
+0

Così usa la modalità underscore '.noConflict()' –

+0

Wow avevo appena letto la documentazione completa che avrei capito. Grazie! Indovina che non sono solo pazzo ... –

+1

Con il nodo v6.0, il comportamento predefinito di '_' (sottolineatura) è disabilitato quando viene assegnato a qualsiasi valore. Un messaggio mostra "Assegnazione di espressioni a _ ora disabilitata." – abhisekp

Problemi correlati