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