为什么JSLint希望我使用双引号而不是单引号?期待'''而不是看'''

Thu*_*rge 30 javascript jslint

我最近开始看到JSLint发出以下警告:

JSLint:期待'''而不是'''.

换句话说,它希望我使用双引号而不是单引号.为什么JSLint会对此发出警告?在JavaScript中,单引号和双引号是否或多或少可互换,仅受程序员的偏好?

Thu*_*rge 32

2016年2月7日版的JSLint的改变更喜欢单引号双引号.JSLint的开发人员和JavaScript和JSON的有影响力的开发人员Douglas Crockford 提供了这样的理由:

当我第一次遇到JavaScript时,它[sic]很惊讶它有两种引号,我试图理解它,使用单个内部文本,并加倍外部.

但最终我意识到,当只需要一个时,区分不值得产生两个混乱和混乱.我决定使用double,因为这是JSON使用的,它避免了由撇号重载引起的错误.我被这个咬了.

总的来说,我正在寻找使语言更小更好的方法.引号与null和undefined属于同一类.我们真的不需要两者.

我尝试了一些自己的代码,我认为这是一个改进.最后,我可以将option.single添加到JSLint.

确实发生了这种情况:option.single2016-06-09版本的JSLint中添加了,因此您现在可以告诉JSLint可选地忽略单引号.

稍后的讨论中,克罗克福德更简洁地重申了他对单引号双引号的理由:

我发现人们在管理这两种报价方面遇到了一些困难.由于第二组完全没有必要,并且由于第二组[单引号]可能引入问题和混淆,我现在建议仅使用双引号.

  • @DustinHodges - Crockford先生是一个聪明人,但他的四分之三的建议归结为"因为我这么说",并且他倾向于解释所有事情,好像它是全黑的,即使他只是在发表意见 - 而且多年来,他已经改变了对此和其他几个问题的看法. (8认同)
  • 你知道Crockford所指的单引号有什么问题吗? (4认同)
  • @DustinHodges我看到有人在第一个引文中询问他的"超载撇号"评论,他给出了"警告"(不要试试这个!)的例子;`.我认为他的意思是撇号用于正确拼写英语单词和JavaScript中的语法标记.到目前为止,我还没有发现他可能提到的其他问题. (2认同)
  • @DustinHodges 是的,但没有任何带有引号的英语单词。句子是的,但不是单词。 (2认同)
  • 确实.我可以看出为什么他只选择使用双引号,但你只是为一个等效问题交易一个问题,可能发生率较低.我只是被克罗克福德打扰说单引号是不必要的,没有进一步的解释我可以做出同样的论点,双引号是不必要的. (2认同)

ssu*_*ube 12

这是一个非常固执的工具的垃圾邮件警告,没有充分的理由.

旧的lint工具(JSLint和JSHint)已被ESLint完全取代,ESLint支持更多规则并允许您配置您真正感兴趣的选项.具体来说,该quotes规则允许您完全选择单引号,双引号或忽略引用.

  • 这实际上并没有回答为什么*JSLint*抛出此警告的问题. (6认同)
  • @Thunderforge它确实:"这是一个非常固执的工具的垃圾邮件警告." 这没有充分的理由,它纯粹偏爱一个非常古老的工具及其作者. (6认同)
  • @Thunderforge:你的答案引用Crock(福特)的话说*"......我决定选择双重因为这是JSON使用的,它避免了撇号超载引起的错误."*我认为这完全支持了ssube的断言*"这是一个非常固执的工具的垃圾邮件警告,没有充分的理由."* (3认同)
  • - (int)PI/3:这是一个非常固执的用户的垃圾邮件答案,没有充分的理由.严肃地说,怎么说"旧工具"已被"完全取代"并不是自以为是和垃圾? (3认同)