考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
区别纯粹是文体上的。我曾经是一个双重引用的纳粹分子。现在我几乎在所有情况下都使用单引号。除了编辑器突出显示语法之外,没有什么实际区别。
其他回答
没有更好的解决方案;然而,我想指出,有时双引号可能更可取:
新来者将已经熟悉他们语言中的双引号。在英语中,我们必须使用双引号“来识别一段被引用的文本。如果我们使用单引号”,读者可能会将其误解为一个收缩词。被“”包围的一段文本的其他含义表示“口语”含义。保持与现有语言一致是有意义的,这可能会简化代码的学习和解释。双引号不需要转义撇号(如缩写)。考虑一下字符串:“我要去购物中心”,而不是其他转义的版本:“我将去购物中心。”。双引号在许多其他语言中表示字符串。当你学习像Java或C这样的新语言时,总是使用双引号。在Ruby、PHP和Perl中,单引号字符串表示没有反斜杠转义,而双引号支持它们。JSON符号用双引号书写。
尽管如此,正如其他人所说,保持一致是最重要的。
严格来说没有什么区别,所以这主要取决于口味和字符串中的内容(或者如果JavaScript代码本身在字符串中),以保持较少的转义数。
速度差异图例可能来自PHP世界,其中两个引号具有不同的行为。
此外,该规范(目前在MDN中提到)似乎没有说明单引号和双引号之间的任何区别,除了右引号和一些未转义的几个字符。然而,模板文本(`-反引号字符)需要额外的解析/处理。
字符串文字是用单引号或双引号括起来的0个或多个Unicode代码点。Unicode码点也可以用转义序列表示。除右引号代码点U+005C(REVERSE SOLIDUS)、U+000D(CARRIAGE RETURN)和U+000A(LINE FEED)外,所有代码点都可以按字面形式出现在字符串文字中。任何代码点都可能以转义序列的形式出现。字符串文本计算为ECMAScript字符串值。。。
资料来源:https://tc39.es/ecma262/#sec-文字字符串文字
严格地说,意思没有区别;因此,选择归根结底是为了方便。
以下是可能影响您选择的几个因素:
房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。
本规范第7.8.4节描述了文字字符串表示法。唯一的区别是DoubleStringCharacter是“SourceCharacter但不是双引号”,而SingleStringCharacter则是“SourceCharacter但不是单引号”。因此,唯一的区别可以证明如下:
'A string that\'s single quoted'
"A string that's double quoted"
因此,这取决于您要进行多少引号转义。显然,这同样适用于双引号字符串中的双引号。