考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
如果使用的是JSHint,如果使用双引号字符串,则会引发错误。
我通过Yeoman清理AngularJS使用了它,但也许有某种方式可以配置它。
顺便说一句,当您将HTML转换为JavaScript时,使用单引号更容易:
var foo = '<div class="cool-stuff">Cool content</div>';
至少JSON使用双引号来表示字符串。
回答你的问题没有任何琐碎的方法。
其他回答
严格地说,意思没有区别;因此,选择归根结底是为了方便。
以下是可能影响您选择的几个因素:
房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。
我想说,区别纯粹是风格上的,但我真的有点怀疑。考虑以下示例:
/*
Add trim() functionality to JavaScript...
1. By extending the String prototype
2. By creating a 'stand-alone' function
This is just to demonstrate results are the same in both cases.
*/
// Extend the String prototype with a trim() method
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
// 'Stand-alone' trim() function
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
};
document.writeln(String.prototype.trim);
document.writeln(trim);
在Safari、Chrome、Opera和Internet Explorer(在Internet Explorer 7和Internet Explorer 8中测试)中,这将返回以下内容:
function () {
return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
然而,Firefox会产生一个稍微不同的结果:
function () {
return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
单引号已被双引号取代。(还要注意缩进空格是如何被四个空格替换的。)这给人的印象是,至少有一个浏览器在内部解析JavaScript,就好像所有内容都是用双引号写的一样。有人可能会想,如果一切都是按照这个“标准”编写的,那么Firefox解析JavaScript所需的时间就更少了。
顺便说一句,这让我成为一只非常悲伤的熊猫,因为我认为单引号在代码中看起来更好。此外,在其他编程语言中,它们通常比双引号使用得更快,因此只有在JavaScript中使用同样的方法才有意义。
结论:我认为我们需要对此做更多的研究。
这或许可以解释彼得·保罗·科赫2003年的测试结果。
在Explorer Windows中,单引号有时似乎更快(我的测试中大约有1/3显示了更快的响应时间),但如果Mozilla显示出差异,它处理双引号的速度会稍快一些。我在歌剧中发现没有什么不同。
2014年:Firefox/Spidermonkey的现代版本不再这么做了。
如果您正在处理JSON,应该注意,严格来说,JSON字符串必须双引号。当然,许多库也支持单引号,但我在一个项目中遇到了很大的问题,因为我意识到单引号实际上不符合JSON标准。
本规范第7.8.4节描述了文字字符串表示法。唯一的区别是DoubleStringCharacter是“SourceCharacter但不是双引号”,而SingleStringCharacter则是“SourceCharacter但不是单引号”。因此,唯一的区别可以证明如下:
'A string that\'s single quoted'
"A string that's double quoted"
因此,这取决于您要进行多少引号转义。显然,这同样适用于双引号字符串中的双引号。
JavaScript中的单引号和双引号没有任何区别。
规范很重要:
可能存在性能差异,但它们绝对是最小的,并且可以根据浏览器的实现随时更改。除非JavaScript应用程序长达数十万行,否则进一步讨论是徒劳的。
这就像一个基准,如果
a=b;
比
a = b;
(额外空间)
今天,在特定的浏览器和平台等中。