考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
严格来说没有什么区别,所以这主要取决于口味和字符串中的内容(或者如果JavaScript代码本身在字符串中),以保持较少的转义数。
速度差异图例可能来自PHP世界,其中两个引号具有不同的行为。
其他回答
我认为,如果您正在进行内联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
严格来说没有什么区别,所以这主要取决于口味和字符串中的内容(或者如果JavaScript代码本身在字符串中),以保持较少的转义数。
速度差异图例可能来自PHP世界,其中两个引号具有不同的行为。
没有更好的解决方案;然而,我想指出,有时双引号可能更可取:
新来者将已经熟悉他们语言中的双引号。在英语中,我们必须使用双引号“来识别一段被引用的文本。如果我们使用单引号”,读者可能会将其误解为一个收缩词。被“”包围的一段文本的其他含义表示“口语”含义。保持与现有语言一致是有意义的,这可能会简化代码的学习和解释。双引号不需要转义撇号(如缩写)。考虑一下字符串:“我要去购物中心”,而不是其他转义的版本:“我将去购物中心。”。双引号在许多其他语言中表示字符串。当你学习像Java或C这样的新语言时,总是使用双引号。在Ruby、PHP和Perl中,单引号字符串表示没有反斜杠转义,而双引号支持它们。JSON符号用双引号书写。
尽管如此,正如其他人所说,保持一致是最重要的。
如果使用的是JSHint,如果使用双引号字符串,则会引发错误。
我通过Yeoman清理AngularJS使用了它,但也许有某种方式可以配置它。
顺便说一句,当您将HTML转换为JavaScript时,使用单引号更容易:
var foo = '<div class="cool-stuff">Cool content</div>';
至少JSON使用双引号来表示字符串。
回答你的问题没有任何琐碎的方法。