考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的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世界,其中两个引号具有不同的行为。
有些人声称看到了性能差异:旧邮件列表线程。但我找不到任何一个可以确认的。
主要的事情是查看在字符串中使用的引号(双引号或单引号)。这有助于减少逃跑的次数。例如,当您在字符串中处理HTML内容时,使用单引号更容易,这样就不必转义属性周围的所有双引号。
当不能使用单引号时,我会使用双引号,反之亦然:
"'" + singleQuotedValue + "'"
'"' + doubleQuotedValue + '"'
而不是:
'\'' + singleQuotedValue + '\''
"\"" + doubleQuotedValue + "\""
严格地说,意思没有区别;因此,选择归根结底是为了方便。
以下是可能影响您选择的几个因素:
房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。
我希望我没有添加一些明显的东西,但我一直在努力使用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中尝试使用单引号。这可能会节省一些调试问题。。。