1

我刚刚开始编写自己的JavaScript 框架(只是为了学习经验),并在一些私有成员前面加上_,如下所示:

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

当我针对 Crockford 的JSLint(一如既往)运行我的代码Recommended Options时,我被告知不要使用 _ 作为标识符。

我的问题是,为什么 JSLint 会警告我不要使用 _ 作为标识符?

我在这里遗漏了一些副作用或影响吗?

PS。据我刚才扫描,这本书中没有记录

4

2 回答 2

13

原因是 Douglas Crockford 讨厌 78% 的 Javascript*。许多人认为他有点严格,实际上许多库确实在生产代码中使用前导下划线。我看不出有多大问题。没有副作用。

此外,'$',而不是下划线,是ECMA 规范为“系统”代码预留的符号。

来自 ECMA 262,第 7.6 节:

该标准规定了与 Unicode 标准中给出的语法的一个不同之处:在标识符中的任何位置都允许使用美元符号 ($) 和下划线 (_)。美元符号仅用于机械生成的代码。

*注意:我在开玩笑。他真的只讨厌一半,而且他通常有充分的理由。我不同意 Crockford 的观点,但他通常是对的。

于 2008-12-31T16:59:44.530 回答
8

实际上,我已经就此向 Crockford 发送了电子邮件。这是他的回应:

我认为 _ 应该保留用于系统代码实现,而不是由应用程序使用。

我有点不同意他的观点,我倾向于在我自己的类中使用 _ 作为真正私有成员的前缀,因为它让我清楚什么是私有的。Google 的 Caja 有一些关于使用 _ 的规则,但没有什么会导致您所描述的内容出现问题。

于 2008-12-31T16:54:23.323 回答