2008-12-31 31 views
1

我剛開始寫我自己的JavaScript框架(只是爲了學習經驗)的選項,並有前綴的一些私有成員與_,像這樣的:JavaScript的:「禁止領先_標識符中的」在JSLint的

var _isFireBugEnabled = function() { 
    return (window.console && window.console.firebug); 
}; 

當我跑我對Crockford的JSLint(一如既往),與Recommended Options上的代碼,有人告訴我沒有使用_作爲標識符。

我的問題是,爲什麼JSLint提醒我關於不使用_作爲標識符?

是否有一些副作用或影響我在這裏失蹤?

PS。據我現在可以掃描,這是沒有記錄在book

回答

13

原因是Douglas Crockford討厭Javascript *的約78%。許多人認爲他有點嚴格,實際上很多圖書館在生產代碼中使用了前導下劃線。我沒有看到太多錯誤。沒有副作用。

此外,'$',而不是下劃線,是由ECMA spec爲「系統」代碼留出的符號。

從ECMA 262,第7.6節:

本標準規定從以Unicode 標準給出的語法一個出發 :美元符號($)和 下劃線(_)允許在標識符中的任何地方 。美元符號爲 ,僅用於機械地生成 生成的代碼。

*注意:我正在滔滔不絕。他真的只討厭一半,他通常有很好的理由。我不同意克羅克福德在這裏,但他通常是非常正確的。

8

我實際上已經通過電子郵件發送這個Crockford。這是他的迴應:

我覺得_應預留 系統代碼的實現,而不是 使用的應用程序。

我不同意他的看法,我傾向於用_作爲真正的私人成員在我自己的班級中的前綴,因爲它讓我清楚什麼是私人的。 Google的Caja有關於_的使用的一些規則,但是沒有任何內容會導致你描述的內容出現問題。

+0

Caja只會抱怨2個下劃線,所以{{{foo_}}}沒有問題,但{{{foo__}}}過於冗長。這意味着除其他外,防止意外訪問特殊的解釋器屬性,如{{{__proto__}}} – 2009-01-09 23:25:03