为什么JSLint比Square Bracket更喜欢点符号?

我一直在发现我的一些代码,并且有一些错误,说使用点表示法更好。 我发现我使用方括号表示法( 这篇文章很清楚 ),但是,我想问为什么Crockford更喜欢点符号? 我正在研究的项目已经使用了SBN,因为它是完整的,我不认为这是令人困惑或不可读的,但如果用户点有明显的原因,我会纠正它。

只是想在继续之前完全理解它!

我最了解Crockford,我认为这取决于一致性并避免使用保留字。 在他的网站上 ,他说:

当下标是合法标识符forms的字符串常量时,可以使用点表示法。 由于语言定义中的错误,保留字不能用于点表示法,但它们可用于下标表示法。

由于您可以在下标表示法中引用保留字,因此可能会引起混淆。 基本上,避免使用保留字作为对象成员的名称。 点符号强制执行此操作(通过语言 – Crockford称之为错误),因此将其视为更好的编码实践,以避免使用保留字。

同样在同一网站上,他还指出点符号“更方便”。

来自“JavaScript:好的部分”,它在第21页上说:

这个。 符号是首选,因为它更紧凑,读得更好。

这本书是由Douglas Crockford自己写的。

两种语法都没有问题,两者都适用于所有环境。 但是,尽可能使用点表示法,每次可以保存三个字符。

资源

重要的是要记住JSLint标准完全基于意见。 大多数通常是流行的观点,但有些是有争议的。 话虽这么说,我更喜欢JSHint ,它允许你关闭任何你不同意的选项。

我相信它是将数组元素与对象属性区分开来,并减少令人困惑的代码。

例如:

 var x = []; x.push(stuff); 

这里x[0]是我们访问它的方式。

 var y = { foo: "bar" }; 

y['foo']以及y.foo工作,但为了清楚foo对象y属性不是数组y中的元素 ,我们可以使用点符号表示对象。