考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
我认为,如果您正在进行内联JavaScript(可以说是一件“糟糕”的事情,但要避免这种讨论),单引号是字符串文字的唯一选项。
例如,这很好:
<a onclick="alert('hi');">hi</a>
但是你不能通过我所知道的任何转义方法将“hi”用双引号括起来。甚至“;这可能是我最好的猜测(因为你在HTML属性值中转义引号)在Firefox中不适用。“也不起作用,因为此时您正在逃避HTML,而不是JavaScript。
因此,如果游戏的名称是一致的,并且你将在应用程序的某些部分中使用内联JavaScript,我认为单引号是赢家。如果我错了,请有人纠正我。
其他回答
严格地说,意思没有区别;因此,选择归根结底是为了方便。
以下是可能影响您选择的几个因素:
房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。
使用CoffeeScript时,我使用双引号。我同意你应该选择其中一个并坚持下去。CoffeeScript在使用双引号时提供了插值。
"This is my #{name}"
ECMAScript 6对模板字符串使用反引号(`)。这可能有很好的原因,但在编码时,为了获得插值功能,将字符串文字字符从引号或双引号更改为反引号可能会很麻烦。CoffeeScript可能并不完美,但在任何地方使用相同的字符串文字字符(双引号)并始终能够插入是一个不错的特性。
`This is my ${name}`
谈到性能,报价永远不会成为您的瓶颈。然而,这两种情况下的性能是相同的。
谈到编码速度,如果您使用'来分隔字符串,则需要转义“引号”。更可能需要在字符串内部使用“”。例子:
// JSON Objects:
var jsonObject = '{"foo":"bar"}';
// HTML attributes:
document.getElementById("foobar").innerHTML = '<input type="text">';
然后,我更喜欢使用'来分隔字符串,所以我必须转义更少的字符。
我认为,如果您正在进行内联JavaScript(可以说是一件“糟糕”的事情,但要避免这种讨论),单引号是字符串文字的唯一选项。
例如,这很好:
<a onclick="alert('hi');">hi</a>
但是你不能通过我所知道的任何转义方法将“hi”用双引号括起来。甚至“;这可能是我最好的猜测(因为你在HTML属性值中转义引号)在Firefox中不适用。“也不起作用,因为此时您正在逃避HTML,而不是JavaScript。
因此,如果游戏的名称是一致的,并且你将在应用程序的某些部分中使用内联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