2013-06-12 9 views
7

Tak więc bawiłem się z REPL z Node.js i biblioteką podkreślników, gdy zauważyłem coś bardzo dziwnego. Jeśli I require("underscore"), zmienna _ jest ustawiona globalnie (oczywiście). Następnie, gdy spróbuję uruchomić proste polecenie, takie jak console.log(_.isEmpty), drukuje ono [Function] (ponownie, oczywiście). Jednak po uruchomieniu console.log(_) wydrukuje on [Function], ponieważ zmienna _ została ustawiona na _.isEmpty.W REPL Node.js, dlaczego tak się dzieje?

Dlaczego to robi? Jeśli uruchomię ten sam kod z pliku js, tak się nie stanie. Czy jest to normalna rzecz węzła, czy jest to totalny błąd?

FYI: Węzeł v0.10.10

+0

Zobacz również [Korzystanie z modułu podkreślenia node.js] (http://stackoverflow.com/q/5691901/1048572) – Bergi

Odpowiedz

13

REPL węzeł zawsze ustawia _ do wyniku ostatniej linii.

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

trzeba użyć innego identyfikatora:

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

Tak użyj podkreślenia '.noConflict()' mode –

+0

Wow, czy po prostu przeczytałem pełną dokumentację, którą bym sobie wyobraził. Dzięki! Domyślam się, że nie jestem po prostu szalony ... –

+1

Z Węzłem v6.0 domyślne zachowanie '_' (podkreślenie) jest wyłączone, gdy jest przypisane do dowolnej wartości. Pojawi się komunikat "Przypisanie wyrażenia do _ teraz wyłączone". – abhisekp

Powiązane problemy