考虑以下两种备选方案:

console.log(“double”);console.log(“单个”);

前者在字符串两边使用双引号,而后者在字符串周围使用单引号。

我看到越来越多的JavaScript库在处理字符串时使用单引号。

这两种用法可以互换吗?如果没有,使用一个是否优于另一个?


当前回答

我希望我没有添加一些明显的东西,但我一直在努力使用Django、Ajax和JSON。

假设在HTML代码中确实使用了双引号,这是正常情况,我强烈建议在JavaScript中使用单引号。

所以我同意这位女士的观点,但要小心。

我的底线是:

在JavaScript中,这可能并不重要,但一旦将其嵌入HTML或类似内容中,就会遇到麻烦。你应该知道什么是真正的逃避,阅读,传递你的字符串。

我的简单案例是:

tbox.innerHTML = tbox.innerHTML + '<div class="thisbox_des" style="width:210px;" onmouseout="clear()"><a href="/this/thislist/'
                   + myThis[i].pk +'"><img src="/site_media/'
                   + myThis[i].fields.thumbnail +'" height="80" width="80" style="float:left;" onmouseover="showThis('
                   + myThis[i].fields.left +','
                   + myThis[i].fields.right +',\''
                   + myThis[i].fields.title +'\')"></a><p style="float:left;width:130px;height:80px;"><b>'
                   + myThis[i].fields.title +'</b> '
                   + myThis[i].fields.description +'</p></div>'

您可以在showThis的第三个字段中找到“”。

双引号无效!

原因很清楚,但也很清楚为什么我们应该坚持单引号。。。我想。。。

本例是一个非常简单的HTML嵌入,错误是由“双引号”JavaScript代码的简单复制/粘贴生成的。

所以要回答这个问题:

在HTML中尝试使用单引号。这可能会节省一些调试问题。。。

其他回答

这主要是风格和偏好的问题。在其他答案中有一些非常有趣和有用的技术探索,所以也许我唯一可以补充的就是提供一些世俗的建议。

如果你在一家公司或团队中进行编码,那么遵循“家庭风格”可能是一个好主意。如果你一个人在做一些附带的项目,那么看看社区中的一些杰出领导人。例如,假设您进入Node.js。看看核心模块,例如Undercore.js或express,看看它们使用了什么约定,然后考虑遵循这些约定。如果这两种约定都被同等使用,那么就遵从您的个人偏好。如果你没有任何个人喜好,那就掷硬币吧。如果你没有硬币,我就喝啤酒;)

严格来说没有什么区别,所以这主要取决于口味和字符串中的内容(或者如果JavaScript代码本身在字符串中),以保持较少的转义数。

速度差异图例可能来自PHP世界,其中两个引号具有不同的行为。

本规范第7.8.4节描述了文字字符串表示法。唯一的区别是DoubleStringCharacter是“SourceCharacter但不是双引号”,而SingleStringCharacter则是“SourceCharacter但不是单引号”。因此,唯一的区别可以证明如下:

'A string that\'s single quoted'

"A string that's double quoted"

因此,这取决于您要进行多少引号转义。显然,这同样适用于双引号字符串中的双引号。

如果您正在处理JSON,应该注意,严格来说,JSON字符串必须双引号。当然,许多库也支持单引号,但我在一个项目中遇到了很大的问题,因为我意识到单引号实际上不符合JSON标准。

如果使用的是JSHint,如果使用双引号字符串,则会引发错误。

我通过Yeoman清理AngularJS使用了它,但也许有某种方式可以配置它。

顺便说一句,当您将HTML转换为JavaScript时,使用单引号更容易:

var foo = '<div class="cool-stuff">Cool content</div>';

至少JSON使用双引号来表示字符串。

回答你的问题没有任何琐碎的方法。