考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
从技术上讲,没有区别。这只是风格和惯例的问题。
Douglas Crockford1建议使用双引号。
我个人也这么认为。
其他回答
使用CoffeeScript时,我使用双引号。我同意你应该选择其中一个并坚持下去。CoffeeScript在使用双引号时提供了插值。
"This is my #{name}"
ECMAScript 6对模板字符串使用反引号(`)。这可能有很好的原因,但在编码时,为了获得插值功能,将字符串文字字符从引号或双引号更改为反引号可能会很麻烦。CoffeeScript可能并不完美,但在任何地方使用相同的字符串文字字符(双引号)并始终能够插入是一个不错的特性。
`This is my ${name}`
此外,该规范(目前在MDN中提到)似乎没有说明单引号和双引号之间的任何区别,除了右引号和一些未转义的几个字符。然而,模板文本(`-反引号字符)需要额外的解析/处理。
字符串文字是用单引号或双引号括起来的0个或多个Unicode代码点。Unicode码点也可以用转义序列表示。除右引号代码点U+005C(REVERSE SOLIDUS)、U+000D(CARRIAGE RETURN)和U+000A(LINE FEED)外,所有代码点都可以按字面形式出现在字符串文字中。任何代码点都可能以转义序列的形式出现。字符串文本计算为ECMAScript字符串值。。。
资料来源:https://tc39.es/ecma262/#sec-文字字符串文字
在不同的库中使用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被正式指定为使用双引号,这可能值得考虑,具体取决于系统需求。
我希望我没有添加一些明显的东西,但我一直在努力使用Django、Ajax和JSON。
假设在HTML代码中确实使用了双引号,这是正常情况,我强烈建议在JavaScript中使用单引号。
所以我同意这位女士的观点,但要小心。
我的底线是:
在JavaScript中,这可能并不重要,但一旦将其嵌入HTML或类似内容中,就会遇到麻烦。你应该知道什么是真正的逃避,阅读,传递你的字符串。
我的简单案例是:
tbox.innerHTML = tbox.innerHTML + '<div class="thisbox_des" style="width:210px;" onmouseout="clear()"><a href="/this/thislist/'
+ myThis[i].pk +'"><img src="/site_media/'
+ myThis[i].fields.thumbnail +'" height="80" width="80" style="float:left;" onmouseover="showThis('
+ myThis[i].fields.left +','
+ myThis[i].fields.right +',\''
+ myThis[i].fields.title +'\')"></a><p style="float:left;width:130px;height:80px;"><b>'
+ myThis[i].fields.title +'</b> '
+ myThis[i].fields.description +'</p></div>'
您可以在showThis的第三个字段中找到“”。
双引号无效!
原因很清楚,但也很清楚为什么我们应该坚持单引号。。。我想。。。
本例是一个非常简单的HTML嵌入,错误是由“双引号”JavaScript代码的简单复制/粘贴生成的。
所以要回答这个问题:
在HTML中尝试使用单引号。这可能会节省一些调试问题。。。
当不能使用单引号时,我会使用双引号,反之亦然:
"'" + singleQuotedValue + "'"
'"' + doubleQuotedValue + '"'
而不是:
'\'' + singleQuotedValue + '\''
"\"" + doubleQuotedValue + "\""