考虑以下两种备选方案:

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

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

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

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


当前回答

严格地说,意思没有区别;因此,选择归根结底是为了方便。

以下是可能影响您选择的几个因素:

房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。

其他回答

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

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

严格地说,意思没有区别;因此,选择归根结底是为了方便。

以下是可能影响您选择的几个因素:

房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。

没有更好的解决方案;然而,我想指出,有时双引号可能更可取:

新来者将已经熟悉他们语言中的双引号。在英语中,我们必须使用双引号“来识别一段被引用的文本。如果我们使用单引号”,读者可能会将其误解为一个收缩词。被“”包围的一段文本的其他含义表示“口语”含义。保持与现有语言一致是有意义的,这可能会简化代码的学习和解释。双引号不需要转义撇号(如缩写)。考虑一下字符串:“我要去购物中心”,而不是其他转义的版本:“我将去购物中心。”。双引号在许多其他语言中表示字符串。当你学习像Java或C这样的新语言时,总是使用双引号。在Ruby、PHP和Perl中,单引号字符串表示没有反斜杠转义,而双引号支持它们。JSON符号用双引号书写。

尽管如此,正如其他人所说,保持一致是最重要的。

我希望我没有添加一些明显的东西,但我一直在努力使用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中尝试使用单引号。这可能会节省一些调试问题。。。

在不同的库中使用single与double最可能的原因是程序员偏好和/或API一致性。除了保持一致,使用最适合字符串的字符串。

使用其他类型的引用作为文字:

alert('Say "Hello"');
alert("Say 'Hello'");

这可能会变得复杂:

alert("It's \"game\" time.");
alert('It\'s "game" time.');

ECMAScript 6中新增的另一个选项是模板文本,它使用反引号字符:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`Escape the \` back-tick character and the \${ dollar-brace sequence in a string`);

模板文本提供了一个干净的语法:变量插值、多行字符串等。

注意,JSON被正式指定为使用双引号,这可能值得考虑,具体取决于系统需求。