考虑以下两种备选方案:

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

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

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

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


当前回答

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

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

其他回答

我认为,如果您正在进行内联JavaScript(可以说是一件“糟糕”的事情,但要避免这种讨论),单引号是字符串文字的唯一选项。

例如,这很好:

<a onclick="alert('hi');">hi</a>

但是你不能通过我所知道的任何转义方法将“hi”用双引号括起来。甚至“;这可能是我最好的猜测(因为你在HTML属性值中转义引号)在Firefox中不适用。“也不起作用,因为此时您正在逃避HTML,而不是JavaScript。

因此,如果游戏的名称是一致的,并且你将在应用程序的某些部分中使用内联JavaScript,我认为单引号是赢家。如果我错了,请有人纠正我。

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

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

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

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

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

"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