2013-06-12 117 views
7

所以當我發現一些非常奇怪的東西時,我正在玩Node.js REPL和Underscore庫。如果我是require("underscore"),變量_是全局設置的(顯然)。然後,當我試圖運行一個簡單的命令,如console.log(_.isEmpty)它打印[Function](顯然,再次)。但是,在運行console.log(_)之後,它會打印[Function],因爲變量_已設置爲_.isEmpty在Node.js REPL中,爲什麼會發生這種情況?

爲什麼這樣做?如果我從js文件運行相同的代碼,這不會發生。這是一個正常的節點事情還是這是一個總的錯誤?

FYI:節點v0.10.10

+0

參見[使用的是Node.js使用下劃線模塊(http://stackoverflow.com/q/5691901/1048572) – Bergi

回答

13

節點的REPL總是將_到最後一行的結果。

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

您需要使用不同的標識符:

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

所以使用下劃線'.noConflict()'模式 –

+0

哇,我剛剛閱讀了我想要的完整文檔。謝謝!猜猜我不只是瘋了... –

+1

隨着節點v6.0,'_'(下劃線)的默認行爲被分配給任何值時被禁用。一條消息顯示「表達式分配至_現在禁用」。 – abhisekp

相關問題