考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
考虑以下两种备选方案:
console.log(“double”);console.log(“单个”);
前者在字符串两边使用双引号,而后者在字符串周围使用单引号。
我看到越来越多的JavaScript库在处理字符串时使用单引号。
这两种用法可以互换吗?如果没有,使用一个是否优于另一个?
当前回答
这主要是风格和偏好的问题。在其他答案中有一些非常有趣和有用的技术探索,所以也许我唯一可以补充的就是提供一些世俗的建议。
如果你在一家公司或团队中进行编码,那么遵循“家庭风格”可能是一个好主意。如果你一个人在做一些附带的项目,那么看看社区中的一些杰出领导人。例如,假设您进入Node.js。看看核心模块,例如Undercore.js或express,看看它们使用了什么约定,然后考虑遵循这些约定。如果这两种约定都被同等使用,那么就遵从您的个人偏好。如果你没有任何个人喜好,那就掷硬币吧。如果你没有硬币,我就喝啤酒;)
其他回答
我希望我没有添加一些明显的东西,但我一直在努力使用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中尝试使用单引号。这可能会节省一些调试问题。。。
严格地说,意思没有区别;因此,选择归根结底是为了方便。
以下是可能影响您选择的几个因素:
房屋风格:一些开发商已经使用了一种或另一种惯例。客户端要求:您会在字符串中使用引号吗?(见Ady的回答。)服务器端语言:VB.NET人员可能会选择对JavaScript使用单引号,以便可以在服务器端构建脚本(VB.NET对字符串使用双引号,因此如果使用单引号则很容易区分JavaScript字符串)。库代码:如果您正在使用使用特定样式的库,您可以考虑自己使用相同的样式。个人喜好:你可能会觉得一种或另一种风格更好看。
检查利弊
支持单引号
减少视觉混乱。生成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中没有区别。因此,您可以随时使用任何方便的工具。例如,以下字符串文字都产生相同的字符串:
他说:“我们走吧\""他说:“我们走吧!”他说:“我们走吧!”\""他说:“我们走吧!”
内部字符串用单引号,外部字符串用双引号。这允许您将内部常量与要显示给用户(或写入磁盘等)的字符串区分开来。显然,您应该避免将后者放在代码中,但这并不总是可以做到的。
此外,该规范(目前在MDN中提到)似乎没有说明单引号和双引号之间的任何区别,除了右引号和一些未转义的几个字符。然而,模板文本(`-反引号字符)需要额外的解析/处理。
字符串文字是用单引号或双引号括起来的0个或多个Unicode代码点。Unicode码点也可以用转义序列表示。除右引号代码点U+005C(REVERSE SOLIDUS)、U+000D(CARRIAGE RETURN)和U+000A(LINE FEED)外,所有代码点都可以按字面形式出现在字符串文字中。任何代码点都可能以转义序列的形式出现。字符串文本计算为ECMAScript字符串值。。。
资料来源:https://tc39.es/ecma262/#sec-文字字符串文字
如果使用的是JSHint,如果使用双引号字符串,则会引发错误。
我通过Yeoman清理AngularJS使用了它,但也许有某种方式可以配置它。
顺便说一句,当您将HTML转换为JavaScript时,使用单引号更容易:
var foo = '<div class="cool-stuff">Cool content</div>';
至少JSON使用双引号来表示字符串。
回答你的问题没有任何琐碎的方法。