我刚刚开始编写自己的 JavaScript Framework (仅用于学习体验),并为一些私有成员添加了 _ ,如下所示:
var _isFireBugEnabled = function () {
return (window.console && window.console.firebug);
};
当我在Crockford的JSLint(一如既往)上运行我的代码时,Recommended Options
开启,我被告知不使用_作为标识符。
我的问题是,为什么JSLint警告我不使用_作为标识符?
我在这里缺少一些副作用或影响吗?
PS。就我现在可以扫描而言,book
中没有记录答案 0 :(得分:13)
原因是道格拉斯·克罗克福德讨厌大约78%的Javascript *。许多人认为他有点严格,事实上很多图书馆都在生产代码中使用领先的下划线。我没有看到太多错误。没有副作用。
此外,'$',而不是下划线,是ECMA spec为“系统”代码留出的符号。
来自ECMA 262,第7.6节:
本标准规定了一个出发点 来自Unicode中给出的语法 标准:美元符号($)和 任何地方都允许使用下划线(_) 在标识符中。美元符号是 仅供机械使用 生成的代码。
*注意:我很滑稽。他真的只讨厌一半,他通常有充分的理由。我在这里不同意克罗克福德,但他通常非常正确。
答案 1 :(得分:8)
我实际上已经通过电子邮件发送了Crockford。这是他的回答:
我认为_应该保留 系统代码实现,而不是 应用程序使用。
我在某种程度上不同意他,我倾向于使用_来为我自己的班级中的真正私人成员加前缀,因为它让我清楚了什么是私有的。谷歌的Caja有一些关于_的使用的规则,但没有任何可能导致你所描述的问题。