单引号与双引号(“ vs”)


250

手动编写HTML时,我总是使用单引号。我使用许多渲染的HTML,这些渲染的HTML总是使用双引号。这使我可以确定HTML是手工编写的还是生成的。这是一个好主意吗?

两者有什么区别?我知道它们都可以工作,并且得到所有现代浏览器的支持,但是在不同情况下,一个实际上比另一个更好吗?



5
要回答有关使用单引号还是双引号来确定手写HTML还是生成HTML的问题,不,这可能不是一个好主意。尽管不一致的代码(在某些地方使用单引号,在其他地方使用双引号)可能是手写的,但我敢肯定,很多人(包括我自己)都在各处使用双引号,但是我们的代码肯定不是计算机生成的; )
Doktor J

@Aito的回答确实是正确的,应该接受……就个人而言,我对短属性使用单引号,例如单个关键字/标签,URL和引用;实际上,任何不希望人类阅读的东西。对于较长的文本,或任何可能包含空格或单引号/撇号的内容-作为内容,我使用双引号。这仅
取决于

1
结帐10个主要网站,看看其中大多数使用什么,例如stackoverflow,youtube / google,wikipedia。到目前为止,我很难找到使用单引号的主要网站。
Timo Huovinen

Answers:


391

W3组织

默认情况下,SGML要求使用双引号(ASCII十进制34)或单引号(ASCII十进制39)来分隔所有属性值。当值由双引号分隔时,可以将单引号包括在属性值中,反之亦然。作者还可以使用数字字符引用来表示双引号(")和单引号(')。对于双引号,作者还可以使用字符实体引用"

所以...似乎没什么不同。只取决于你的风格。


38
并且如果您提供压缩(gzip,deflate)页面,则保持一致(与'或“一致)很可能会导致更高的压缩率
cherouvim 2010年

2
@Aito,用于SGML。对于HTML,并非所有属性值都需要定界
Pacerier 2013年

4
我建议虽然单打双打-当一个人可以胜任时为什么要使用两个。
Ujjwal Singh 2014年

7
@JohnHunt:只是对1823字节js文件(来自随机应用程序的随机主干模型)进行了快速测试。如果所有引号都相同('"),则gzip输出为809字节。混合它们会将输出推高到829字节。这可能与您无关,但这并不意味着它与所有人都无关。
cherouvim

3
如果有人说“哦,它的潜力如此之低,可能与一百种可能无关的东西无关”,那么将导致一千针的死亡。在合理的努力下,您可以节省的一切都值得拯救IMO。
合同说我没错,2018年

67

我用 "'正如我想象的大多数人一样,用作顶层和第二层。例如

<a href="#" onclick="alert('Clicked!');">Click Me!</a>

在该示例中,必须同时使用两者,这是不可避免的。


38
我也这样做,但是如果您避免在html内联javascript,则可以避免。
cherouvim 2010年

4
在其他非内联JavaScript情况下,可能需要单引号,例如在使用自定义data-*属性时。根据您的应用程序,以及如何使用data-*属性,您可能需要使用'“内Ş "S”。有时我们将它们用于Google Analytics(分析)事件跟踪:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Jake Wilson

3
考虑var x = "<a href='" + url + "'>click me</a>";
NibblyPig 2012年

4
这样可以很容易避免:<a onclick="alert(\"Clicked!\")">。但是,它的可读性差很多。
fabspro

2
我不确定SGML和HTML5是否正式支持该功能。
fabspro

26

Web开发人员的报价约定

简短答案

在HTML中,单引号(')和双引号(“)可以互换使用,没有区别。

但是建议保持一致,因此我们必须选择一种语法约定并定期使用它。

长答案

Web开发通常包含许多编程语言。HTML,JS,CSS,PHP,ASP,RoR,Python等 因此,我们有许多针对不同编程语言的语法约定。即使不是被认为是“适当的”(即注释惯例),习惯于一种语言的习惯也会跟随我们进入其他语言。对我来说,报价约定也属于此类。

但是我倾向于将HTML与PHP紧密结合使用。在PHP中,单引号和双引号之间存在主要区别。在PHP中,双引号“您可以直接在字符串的文本内插入变量”。(scriptingok.com)并且在使用单引号时,“文本按原样显示”。(scriptingok.com)

PHP需要更长的时间来处理双引号字符串。由于PHP解析器必须提前读取整个字符串以检测其中的任何变量并将其连接起来,因此与单引号字符串相比,处理时间更长。(scriptingok.com)

 

单引号在服务器上更容易。由于PHP不需要事先读取整个字符串,因此服务器可以更快,更快乐地工作。(scriptingok.com)

其他要考虑的事情

  1. 字符串中双引号的频率。我发现我需要在字符串中使用双引号(“)的次数比在字符串中使用单引号(')的次数要多。为减少所需的字符转义次数,我倾向于使用单引号分隔符。
  2. 单引号更容易。这是不言而喻的,但需要澄清的是,为什么必须再按SHIFT键几次。

我的约定

基于对PHP的理解,我为自己(以及我公司的其他部门)设置了约定,即在默认情况下,对于服务器优化,字符串应表示为单引号。如果在属性中需要使用双引号(例如JavaScript),则在字符串中使用双引号,例如:

<button onClick='func("param");'>Press Me</button>

当然,如果我们使用PHP,并且希望解析器处理字符串中的PHP变量,则应有意使用双引号。 $a='Awesome'; $b = "Not $a";

资料来源

PHP中的单引号和双引号。(nd)。取自2014年11月26日,网址http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP


3
单引号VS在PHP双引号的性能差异被称为是零几年你回答了这个问题之前: nikic.github.io/2012/01/09/...
康纳尔Mancone

1
您发现字符串中的双引号多于单引号吗?有趣。我不记得上次在字符串中双引号了。
Zonker.in.Geneva

不断。在过去的十年中,作为一个全栈开发人员,我发现自己需要在字符串中使用双引号的频率比单引号的频率高10倍。JavaScript的最常见示例是属性选择器仅适用于双引号,因此document.querySelector("[name^='myname']")document.querySelector('[name^="myname"]')完美运行时根本无法使用。
达斯汀·普瓦森

@DustinPoissant WHAAAT?在哪个浏览器上?
李斯特先生

14

如果都一样,也许最好使用单引号,因为它不需要按住Shift键。更少的击键==减少RSI的机会。


2
好吧,至少在银河通用版上。(嘘)
n611x007 2014年

1
RSI的风险和键击次数与编码标准有什么关系?
Dib 2014年

如此之多的意见使得单引号和双引号之间没有区别,但是只有一种澄清了击键次数相差两倍。我们需要很多引号。我是否可以提出一个建议,即它可能需要更多的神经元才能触发我们大脑中双引号的模式识别?
罗兰

对于法语键盘而言并非如此。
Tokeeen.com

11

在HTML中,无论您使用"还是',我都不认为这很重要,但是在整个文档中应始终使用它。

我自己的用法更喜欢attribute / html使用",而所有javascript都使用'

对我来说,这使阅读和检查变得更加容易。如果您的使用对您来说比我的意义更大,则无需进行任何更改。但是,对我来说,您的代码会感到混乱。这是个人的一切。


为什么需要一致使用?仅出于可读性?
timetofly

因为这样更容易避免错误。
大卫说恢复莫妮卡(Monica)2013年

2
我通常也具有use属性",但是其他时候我在PHP代码中编写代码,在这些代码中我更喜欢echo使用use "来进行解析。如果使用,则此回显内的任何html属性都更具可读性'。当然,它不是一致的,但是没有所有反斜杠就容易得多。
timetofly 2013年

3
任何对您有用的方法都可以;保持一致并不意味着“总是做X”,而只是意味着“在X情况下这样做”,一致性可以感知上下文。并因此而得到最佳利用。
大卫说恢复莫妮卡

9

实际上,最好的方法就是Google推荐的方法。双引号:https : //google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

请参阅https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity 引用Google的建议:“使用有效的HTML是可衡量的基准质量属性,有助于了解技术要求和约束,并确保正确使用HTML。”


到目前为止,我遇到的绝大多数网站(包括stackoverflow)都使用双引号,我认为整个网络的一致性会更好,因此IMHO的正确答案也是“双引号”。
Timo Huovinen

2
但为什么!?为什么"结束'

2
@San Consistency,主要是。遵循美国英语标准,双引号用于引号,单引号用于子引号。
Nielsvh

6

我知道很多人不会同意,但这是我的工作,而且我真的很喜欢这种编码风格:实际上,除非绝对必要,否则我不会在HTML中使用任何引号。

例:

<form method=post action=#>
<fieldset>
<legend>Register here: </legend>
  <label for=account>Account: </label>
  <input id=account type=text name=account required><br>
  <label for=password>Password: </label>
  <input id=password type=password name=password required><br>
...

仅当属性值中有空格或其他内容时才使用双引号:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>

1
背后有原因吗?还是只是“真正享受这种编码风格”?
Bugs Bunny 2015年

4
不带引号的HTML看起来更干净(文件大小略小)。那是唯一的原因,仅此而已。此外,我真的看不到要求每个属性都带有引号的意义。为什么不能只省却麻烦呢?甚至w3.org也接受未加引号的属性值(w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted)。简单胜于复杂。引用是某种宗教吗?
兰迪·唐

5
不,我不了解任何宗教。我使用HTML已经有一段时间了,之前从未见过使用过的样式...因此我问。
Bugs Bunny 2015年

1
另外,HTML缩小器也去除不必要的引号。
Nimrod

2
在属性值周围省略引号的问题是,不同的标准具有需要引用的不同字符列表。例如,HTML4表示仅包含字母,数字,破折号和点的值可以不加引号,但是HTML5表示除空格和“''<=>以外的所有内容,因此您应该小心,尤其是对于较旧的浏览器!
Lister

5

对HTML使用双引号

<div class="colorFont"></div>

对JavaScript使用单引号

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');

2

我在使用Bootstrap时遇到了一个问题,即使用双引号与使用单引号比较重要(这不起作用)。class ='row-fluid'给了我一些问题,导致最后一个跨度低于其他跨度,而不是很好地坐在最右边,而class =“ row-fluid”起作用了。


1

如果您正在编写asp.net,则有时必须在Eval语句中使用双引号,并使用单引号来分隔值-这主要是为了使C#内联代码使用eval容器中的字符串而不是字符来知道其值。就我个人而言,我只会将其中一个用作标准,而不是将它们混合使用,这看起来很麻烦。


1

在以下情况下使用“代替”

<input value="user"/> //Standard html
<input value="user's choice"/> //Need to use single quote
<input onclick="alert('hi')"/> //When giving string as parameter for javascript function

在以下情况下,使用'代替“

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable

3
在“分配html内容做js变量”的情况下,我通常更喜欢做相反的事情:var html = '<input name="username" />';并与其他html保持一致:)
Erenor Paz 2014年

1

它与html没什么区别,但是如果您使用另一种编程语言动态生成html,则一种方法可能比另一种方法容易。

例如,在Java中,双引号用于指示String的开头和结尾,因此,如果要在String中包含双引号,则必须使用反斜杠对其进行转义。

String s = "<a href=\"link\">a Link</a>"

单引号没有这种问题,因此使用单引号可以使Java中的代码更具可读性。

String s = "<a href='link'>a Link</a>"

特别是如果您必须编写具有很多属性的html元素。(请注意,我通常使用jhtml之类的库来用Java编写html,但这样做并不总是很实际)。


在servlet上做了两次实习。我当时在分析代码,直到现在我才开始意识到双引号,单引号和字符串连接的现实。我曾经研究的网站使用html中的双引号和java中的单引号。甚至没有意识到。很高兴我终于明白了……
迈克尔

0

我是新手,但是只有在第一个中使用双引号时才使用单引号。如果我不清楚,请向您显示示例:

<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>

希望我能帮上忙。


-5

在PHP中,使用双引号会导致性能略有下降,因为会评估变量名称,因此在实践中,我在编写代码时总是使用单引号:

echo "This will print you the value of $this_variable!";
echo 'This will literally say $this_variable with no evaluation.';

所以你可以写这个;

echo 'This will show ' . $this_variable . '!';

我相信Javascript的功能类似,因此如果您觉得对性能的影响很小的话。


此外,如果您一直浏览HTML规范2.0,则此处列出的所有标签都应包含在内。

W3 HTML DTD参考

(使用双引号。)无论您倾向于频繁使用哪种格式,一致性都是很重要的。


13
JavaScript不会评估字符串中的变量名称。有和JavaScript之间的无差异“。”
约翰·梅勒

-9

双引号用于字符串(即“这是一个字符串”),单引号用于字符(即“ a”,“ b”或“ c”)。根据编程语言和上下文的不同,您可以避免对字符使用双引号,而对字符串不使用单引号。

HTML并不关心您使用哪个。但是,如果要在PHP脚本中编写HTML,则应坚持使用双引号,因为您需要将其转义(即\“ whatever \”),以免混淆自己和PHP。


我知道很多编程语言,但其中一种是正确的。
mikl 2014年

1
C#和Java中的@mikl一般做法是双引号中的字符串和单引号中的字符。但这并没有验证此答案。除非这是对其他问题的答案。
Evorlor'1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.