什么时候应该在 JavaScript 中使用双引号或单引号?

IT技术 javascript string conventions
2021-02-01 20:31:07

console.log("double"); 对比 console.log('single');

我看到越来越多的 JavaScript 库在处理字符串时使用单引号。使用一个而不是另一个的原因是什么?

我认为它们几乎可以互换。

6个回答

在不同的库中使用 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被正式指定为使用双引号,这可能值得考虑,具体取决于系统要求。

@Cerebrus - 我认为这个灵活性是可以的。当然选择一种首选样式,但是如果您需要摆脱样式以节省在一个字符串中转义大量引号。我会同意的。
2021-03-12 20:31:07
有点跑题,但如果人们使用正确的排版,很多关于转义的讨论都将过时:alert('It’s “game” time')vs. alert("It’s “game” time")– 无所谓。你只需要在(罕见)情况下的单人或双人主要标志逃跑'"实际上是合适的。
2021-03-17 20:31:07
所有代码约定都要注意的重要一点 - 定义一次并坚持下去。IOW,不要在某处使用双引号,在其他地方使用单引号。
2021-03-18 20:31:07
@Olly Hicks,有趣的测试!!在 Chrome 13 (OSX) 中,单引号实际上比双引号快几倍。有趣的...
2021-03-20 20:31:07
我认为没有任何理由必须对此保持一致。任何一个都没有优势,而且我认为无论您在一个地方使用 ' 还是在另一个地方使用 " 都不会真正影响可读性。
2021-04-06 20:31:07

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

如果可以.stringify()您不应该手动编写 JSON
2021-03-10 20:31:07
这就是始终使用双引号的最佳论据。JSON 应该有双引号。其他答案主要是给出“保持一致”的建议,这意味着如果语言的任何部分可能实际上强制使用双引号,您应该始终使用该双引号。
2021-03-16 20:31:07
这在使用多种语言时也很重要,因为几乎所有其他语言(Java、C、C++ 等)都对字符串使用双引号,对字符使用单引号。我更喜欢全面使用相同的引用,因此对 JS 坚持使用双引号。随着多年的触摸输入,额外的双引号转换键完全无关紧要,如果您的编码受到输入的限制,那么您需要正确练习输入。
2021-03-26 20:31:07
属性名称的JSON字符串必须加双引号,而是一个JSON字符串作为一个整体可以是单引号:var jsonString = '{"key1":"value1"}';(不,我建议手动构建JSON)
2021-03-28 20:31:07
这在使用 jQuery.ajax 调用 ASP.NET 服务(Web 服务、页面方法或 MVC)时非常重要。
2021-04-01 20:31:07

没有更好的解决方案但是,我想争辩说,有时双引号可能更可取:

  • 新人已经熟悉他们语言中的双引号在英语中,我们必须使用双引号"来标识一段引用文本。如果我们使用单引号',读者可能会将其误解为收缩。被 包围的一段文本的另一个含义'表示“口语”含义。与预先存在的语言保持一致是有意义的,这可能会简化代码的学习和解释。
  • 双引号消除了转义撇号的需要(如在收缩中)。考虑字符串: "I'm going to the mall", 与其他转义版本: 'I\'m going to the mall'
  • 双引号在许多其他语言中表示字符串当您学习 Java 或 C 等新语言时,总是使用双引号。在 Ruby、PHP 和 Perl 中,单引号字符串表示没有反斜杠转义,而双引号支持它们。

  • JSON 表示法是用双引号编写的。

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

@JohnFerguson,仅出于这个原因,可能需要使用双引号来进行区分(撇号和引用的段落之间)。
2021-03-13 20:31:07
举个例子——我刚刚输入的内容(有多个撇号,没有双引号;)
2021-03-13 20:31:07
我是关于实用主义的。由于我输入或使用的 100 个字符串中有 1 个带有双引号,而且还有更多带有撇号,因此我使用双引号。但是,归根结底,您应该使用 1) 如果您是项目的新开发人员,则应该使用项目中已经使用的引用类型,或者 2) 使用您认为更有意义的引用类型。
2021-03-26 20:31:07
您关于英语的第一点并不总是正确的,并且可能会根据地区/家庭惯例而变化。印刷材料通常对语音使用单引号,对大块引用文本使用其他格式。您的“口语”含义不是用于强调的引号的有用定义。此外,英语用户通常对引号和撇号很不友好。
2021-03-30 20:31:07
要补充@user1429980 的第三点,单引号表示 Java 和 C 中的不同数据类型。
2021-04-04 20:31:07

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

'A string that\'s single quoted'

"A string that's double quoted"

所以这取决于你想要做多少引号转义。显然,这同样适用于双引号字符串中的双引号。

@MathiasBynens - 这是一个有趣的观察结果,至少有一年了,甚至可能长达 6 年。
2021-03-10 20:31:07
@Gareth:不过,我不是在谈论规格,而是在谈论可能的性能影响。stackoverflow.com/questions/242813/...
2021-03-20 20:31:07
怎么样"{\"name\": \"Peter\"}"VS '{"name": "Peter"}'诚然,您可以说这是相同的差异,但它肯定会以与上述示例不同的方式影响您的决定。
2021-03-24 20:31:07
如果您在代码中放置了足够多的撇号来弥补需要按 shift+' 的次数,那么您就做错了。
2021-03-30 20:31:07
应该使用 U+2019 作为撇号,而不是垂直单引号
2021-04-06 20:31:07

单引号

我希望双引号是标准的,因为它们更有意义,但我一直使用单引号,因为它们在场景中占主导地位。

单引号:

没有偏好:

双引号:

airbnb 现在更喜欢双引号
2021-03-17 20:31:07
@SurajJain 啊,这些是用 JSON 编写的代码样式检查器配置,根本不允许使用单引号。阅读它们是比较不同项目所做选择的好方法。
2021-03-17 20:31:07
@SurajJain 来源?AirbnbGoogle风格指南仍然将单一列为首选。
2021-03-18 20:31:07
Crockford 现在更喜欢双引号。
2021-03-21 20:31:07
谷歌现在更喜欢单引号
2021-03-26 20:31:07