2013-11-14 64 views
0

在一些app.js,使用以下代碼新要求( '下劃線')與要求( '下劃線')的NodeJS [Webstorm 7自動完成]

var _ = require('underscore'); 

_.times(2, function() { 
    console.log('Hello'); 
}); 

Webstorm 7抱怨懸而未決函數 '倍'。 一些谷歌搜索後,我發現,如果我做了var _ = new require('underscore');然後webstorm根本不抱怨。 但是,我對NodeJS非常非常陌生,所以無法正確掌握它。

請告訴我new require('')require('')之間有什麼區別以及它如何解決問題。另外,使用new require會有什麼性能影響?

回答

1

要說清楚:_是一個函數,所以你可以使用它與new關鍵字。但是這應該被用作包裝器,它會添加方法來傳遞對象,以便使您的api對象成爲面向對象。

因此,如果您使用_作爲函數或構造函數,您需要傳遞一個對象作爲參數,並且您將獲得對象與您的數據和一些附加爲方法的下劃線函數(即,您不需要傳遞數據作爲第一個參數,它被封裝在對象中)。

基本上,寫var _ = new require('underscore')是不正確的。你會得到無用的對象,這絕對不是真正的_。 Webstorm怎麼樣 - 它會抱怨很多,除非你關閉這些功能。 Javascript太動態,無法在所有情況下都能正常工作。

摘要:使用var _ = require('underscore');,忽略Webstrom。