1

私は自分のJavaScript フレームワークを書き始めたばかりで (学習経験のためだけに)、次のように、一部のプライベート メンバーの前に_を付けました。

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

Crockford のJSLintに対してコードを(いつものように) Recommended Optionson で実行したとき、識別子として _ を使用しないように言われました。

私の質問は、_ を識別子として使用していないことに関して JSLint が警告するのはなぜですか?

ここで見逃している副作用や影響はありますか?

PS。今スキャンした限りでは、これは本には記載されていませ

4

2 に答える 2

13

その理由は、Douglas Crockford が Javascript* の約 78% を嫌っているからです。多くの人は、彼は少し厳格だと思っています。実際、多くのライブラリは製品コードで先頭にアンダースコアを使用しています。私はそれが間違っているとは思いません。副作用はありません。

さらに、アンダースコアではなく「$」は、ECMA 仕様によって「システム」コード用に確保された記号でした。

ECMA 262、セクション 7.6 から:

この標準は、Unicode 標準で与えられた文法からの 1 つの逸脱を指定します。ドル記号 ($) とアンダースコア (_) は、識別子のどこでも使用できます。ドル記号は、機械的に生成されたコードでのみ使用することを意図しています。

*注: 私は冗談を言っています。彼は本当に約半分しか嫌いではなく、通常は正当な理由があります. 私はここで Crockford に同意しませんが、彼はたいてい非常に正しいです。

于 2008-12-31T16:59:44.530 に答える
8

私は実際にこれについてCrockfordに電子メールを送った. これは彼の反応でした:

_ はシステム コードの実装用に予約する必要があり、アプリケーションでは使用しないと思います。

私は彼に多少同意しません。_ を使用して、自分のクラスで本当にプライベートなメンバーをプレフィックスにする傾向があります。これにより、何がプライベートであるかが明確になるからです。Google の Caja には _ の使用に関するいくつかの規則がありますが、記述内容に問題を引き起こすものは何もありません。

于 2008-12-31T16:54:23.323 に答える