2012-05-22 17 views
14

जब मैं अपने कंसोल में नोड चलाता हूं और var _ = require('underscore'); टाइप करता हूं, _ अपरिभाषित समाप्त होता है। अगर मैं एक ही कोड को एक फ़ाइल में डालता हूं और इसे निष्पादित करता हूं, तो अंडरस्कोर लाइब्रेरी अपेक्षित के रूप में शामिल हो जाती है।node.js REPL पर निष्पादित होने पर आवश्यकता क्यों होती है ('अंडरस्कोर') अपरिभाषित होती है?

$ node 
> var _ = require('underscore'); 
> console.log(_) 
undefined // underscore library does not load 
> var async = require('async'); 
undefined 
> console.log(async) // async library does 
{ noConflict: [Function], 
    nextTick: [Function], 
    forEach: [Function], 
... 
> 

लेकिन एक .js node test.js के रूप में निष्पादित फ़ाइल में एक ही कोड दोनों पुस्तकालयों की उम्मीद के रूप में लोड हो रहा है पता चलता है। क्या चल रहा है?

उत्तर

30

नोड प्रतिकृति पिछले मूल्यांकन इनपुट के मूल्य पर _ बांधता है; जो में बाध्यकारी आपके _ को ओवरराइट करता है। the node.js documentation on the repl भी देखें।

यह कोई फर्क नहीं पड़ता ... बदल देता है उदाहरण के लिए, क्या सही है:

$ node 
> var _ = "any value"; 
undefined 
> _ 
undefined 
+3

इस मुझे पागल गाड़ी चला रहा था! –

+0

यह मुझे पागल भी चला रहा था। मैं यह उल्लेख करना चाहता हूं कि यह उत्तर लॉनाश के साथ-साथ अंडरस्कोर पर भी लागू होता है। –