在一个字符串字面量已经被单引号或者双引号包裹的前提下,JSHint(自版本r09)遇到一个字符串两边是双引号或者单引号(与之前解析到的字符串相反)时,会抛出"Mixed double and single quotes"的错误。当然,这只发生在quotmark选项被设置为true的情况下。在下面的例子中,我们尝试着将两个字符串字面量赋给变量x和y:
这个错误是为了强调规范的缺失。在JavaScript中,单引号与双引号是没有区别的。这一点在字符串字面量的语法中就已经解释的很清楚了(ES5 §7.8.4):
StringLiteral ::
" DoubleStringCharactersopt "
' SingleStringCharactersopt '
唯一的区别就是DoubleStringCharacters无法包含另一个双引号,同理SingleStringCharacters也无法包含另一个单引号(由于他们会终止字符串字面量)。
但是,在一个程序中混用两种引号是不推荐的(当然那也有例外的情况,比如嵌套的引号)。要解决这个问题,只需要专注使用同一种类型,也可以将quotmark选项设置为double或者single来强制你的偏好:
在JSHint1.0.0及以上版本中,你可以通过一种特殊的语法选项来忽略这个警告。这个警告的标示符是W110。也就意味着你可以通过/*jshint -W110 */
来告诉JSHint不报告这个错误。