考虑以下两种备选方案:

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

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

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

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


当前回答

检查利弊

支持单引号

减少视觉混乱。生成HTML:HTML属性通常由双引号分隔。

elem.innerHTML='<a href=“'+url+'”>您好</a>';然而,单引号在HTML中同样合法。

elem.innerHTML=“您好</a>”;

此外,内联HTML通常是一种反模式。首选模板。

生成JSON:JSON中只允许双引号。

myJson=“{”hello world“:true}”;

同样,您不必以这种方式构造JSON。JSON.stringify()通常就足够了。如果没有,请使用模板。

支持双引号

如果没有颜色编码,双打更容易识别。就像在控制台日志或某种视图源设置中一样。与其他语言相似:在shell编程(Bash等)中,存在单引号字符串文本,但转义不在其中解释。C和Java对字符串使用双引号,对字符使用单引号。如果希望代码是有效的JSON,则需要使用双引号。

对两者都有利

两者在JavaScript中没有区别。因此,您可以随时使用任何方便的工具。例如,以下字符串文字都产生相同的字符串:

他说:“我们走吧\""他说:“我们走吧!”他说:“我们走吧!”\""他说:“我们走吧!”

内部字符串用单引号,外部字符串用双引号。这允许您将内部常量与要显示给用户(或写入磁盘等)的字符串区分开来。显然,您应该避免将后者放在代码中,但这并不总是可以做到的。

其他回答

JavaScript中的单引号和双引号没有任何区别。

规范很重要:

可能存在性能差异,但它们绝对是最小的,并且可以根据浏览器的实现随时更改。除非JavaScript应用程序长达数十万行,否则进一步讨论是徒劳的。

这就像一个基准,如果

a=b;

a = b;

(额外空间)

今天,在特定的浏览器和平台等中。

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

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

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

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

检查利弊

支持单引号

减少视觉混乱。生成HTML:HTML属性通常由双引号分隔。

elem.innerHTML='<a href=“'+url+'”>您好</a>';然而,单引号在HTML中同样合法。

elem.innerHTML=“您好</a>”;

此外,内联HTML通常是一种反模式。首选模板。

生成JSON:JSON中只允许双引号。

myJson=“{”hello world“:true}”;

同样,您不必以这种方式构造JSON。JSON.stringify()通常就足够了。如果没有,请使用模板。

支持双引号

如果没有颜色编码,双打更容易识别。就像在控制台日志或某种视图源设置中一样。与其他语言相似:在shell编程(Bash等)中,存在单引号字符串文本,但转义不在其中解释。C和Java对字符串使用双引号,对字符使用单引号。如果希望代码是有效的JSON,则需要使用双引号。

对两者都有利

两者在JavaScript中没有区别。因此,您可以随时使用任何方便的工具。例如,以下字符串文字都产生相同的字符串:

他说:“我们走吧\""他说:“我们走吧!”他说:“我们走吧!”\""他说:“我们走吧!”

内部字符串用单引号,外部字符串用双引号。这允许您将内部常量与要显示给用户(或写入磁盘等)的字符串区分开来。显然,您应该避免将后者放在代码中,但这并不总是可以做到的。

只需保持使用的一致性。但不要降低你的舒适度。

"This is my string."; // :-|
"I'm invincible."; // Comfortable :)
'You can\'t beat me.'; // Uncomfortable :(
'Oh! Yes. I can "beat" you.'; // Comfortable :)
"Do you really think, you can \"beat\" me?"; // Uncomfortable :(
"You're my guest. I can \"beat\" you."; // Sometimes, you've to :P
'You\'re my guest too. I can "beat" you too.'; // Sometimes, you've to :P

ECMAScript 6更新

使用模板文本语法。

`Be "my" guest. You're in complete freedom.`; // Most comfort :D