考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
本规范第7.8.4节描述了文字字符串表示法。唯一的区别是DoubleStringCharacter是“SourceCharacter但不是双引号”,而SingleStringCharacter则是“SourceCharacter但不是单引号”。因此,唯一的区别可以证明如下:
'A string that\'s single quoted'
"A string that's double quoted"
因此,这取决于您要进行多少引号转义。显然,这同样适用于双引号字符串中的双引号。
其他回答
如果使用的是JSHint,如果使用双引号字符串,则会引发错误。
我通过Yeoman清理AngularJS使用了它,但也许有某种方式可以配置它。
顺便说一句,当您将HTML转换为JavaScript时,使用单引号更容易:
var foo = '<div class="cool-stuff">Cool content</div>';
至少JSON使用双引号来表示字符串。
回答你的问题没有任何琐碎的方法。
本规范第7.8.4节描述了文字字符串表示法。唯一的区别是DoubleStringCharacter是“SourceCharacter但不是双引号”,而SingleStringCharacter则是“SourceCharacter但不是单引号”。因此,唯一的区别可以证明如下:
'A string that\'s single quoted'
"A string that's double quoted"
因此,这取决于您要进行多少引号转义。显然,这同样适用于双引号字符串中的双引号。
没有更好的解决方案;然而,我想指出,有时双引号可能更可取:
新来者将已经熟悉他们语言中的双引号。在英语中,我们必须使用双引号“来识别一段被引用的文本。如果我们使用单引号”,读者可能会将其误解为一个收缩词。被“”包围的一段文本的其他含义表示“口语”含义。保持与现有语言一致是有意义的,这可能会简化代码的学习和解释。双引号不需要转义撇号(如缩写)。考虑一下字符串:“我要去购物中心”,而不是其他转义的版本:“我将去购物中心。”。双引号在许多其他语言中表示字符串。当你学习像Java或C这样的新语言时,总是使用双引号。在Ruby、PHP和Perl中,单引号字符串表示没有反斜杠转义,而双引号支持它们。JSON符号用双引号书写。
尽管如此,正如其他人所说,保持一致是最重要的。
使用CoffeeScript时,我使用双引号。我同意你应该选择其中一个并坚持下去。CoffeeScript在使用双引号时提供了插值。
"This is my #{name}"
ECMAScript 6对模板字符串使用反引号(`)。这可能有很好的原因,但在编码时,为了获得插值功能,将字符串文字字符从引号或双引号更改为反引号可能会很麻烦。CoffeeScript可能并不完美,但在任何地方使用相同的字符串文字字符(双引号)并始终能够插入是一个不错的特性。
`This is my ${name}`
检查利弊
支持单引号
减少视觉混乱。生成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中没有区别。因此,您可以随时使用任何方便的工具。例如,以下字符串文字都产生相同的字符串:
他说:“我们走吧\""他说:“我们走吧!”他说:“我们走吧!”\""他说:“我们走吧!”
内部字符串用单引号,外部字符串用双引号。这允许您将内部常量与要显示给用户(或写入磁盘等)的字符串区分开来。显然,您应该避免将后者放在代码中,但这并不总是可以做到的。