ChatGPT解决这个技术问题 Extra ChatGPT

单引号和双引号(' vs ")

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

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

要回答关于是否使用单引号和双引号来确定手写和生成的 HTML 的问题,不,这可能不是一个好主意。虽然不一致的代码(在某些地方使用单引号,在其他地方使用双引号)可能是手写的,但我相信很多人(包括我自己)到处都使用双引号,但我们的代码肯定不是计算机生成的; )
@Aito 的回答确实是正确的,应该被接受......就个人而言,我使用单引号作为短属性,如单个关键字/标签、URL 和引用;实际上,任何不打算被人类阅读的东西。对于较长的文本,或任何可能包含空格或单引号/撇号的内容 - 作为内容,我使用双引号。这只是您的风格(或您使用的风格指南)的问题
查看 10 个主要网站,看看他们中的大多数使用什么,例如 stackoverflow、youtube/google、wikipedia。到目前为止,我很难找到使用单引号的主要网站。
这么多网站HTML用双引号,所以请用双引号。。这也影响在HTML文档中搜索,单引号和双引号生效。。我标准化使用双引号。。

B
Blixt

w3 组织 said

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

所以……好像没什么区别。只取决于你的风格。


如果您提供压缩(gzip,deflate)页面,并且保持一致(使用'或“)很可能会导致更高的压缩率
我建议尽管单人胜于双人——当一个人可以完成这项工作时,为什么要使用两个。
@cherouvim 更高的压缩率?我们说的是 1 个字节.. 也许是 2 个?哈哈。我认为这无关紧要。
@JohnHunt:刚刚对一个 1823 字节的 js 文件(来自随机应用程序的随机主干模型)进行了快速测试。如果所有引号都相同('"),则 gzip 输出为 809 字节。混合它们将输出推到 829 字节。这可能与您无关,但这并不意味着它与每个人都无关。
@Jacob 最多认为 0.0001%。在现实世界中,这种差异不值得任何人花时间去思考,除非人们使用莫尔斯电码通过手电筒传输数据。 20 个字节是 160 位。从这个角度来看,在 1962 年,Bell 103 或 V.21 调制解调器可以在大约半秒内完成传输。在 1991 年,使用 14.4k 调制解调器需要 90 分之一秒。今天,在网络上?这无关紧要。时期。集成专门的北极或空间通信的东西,也许不是。网络,是的,无关紧要。
B
Bennett

我使用 " 作为顶层,使用 ' 作为第二层,我想大多数人都会这样做。例如

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

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


我也这样做,但如果您避免在 html 中内联 javascript,则可以避免这种情况。
还有其他可能需要单引号的非内联 JavaScript 情况,例如使用自定义 data-* 属性时。根据您的应用程序以及您使用 data-* 属性的方式,您可能需要在 " 中使用 '。有时我们将它们用于 Google Analytics 事件跟踪:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
考虑var x = "<a href='" + url + "'>click me</a>";
可以像这样轻松避免:。但是,这可读性要差得多。
但是,我不完全确定 SGML 和 HTML5 是否正式支持。
C
Corwin Newall

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)

其他需要考虑的事项

字符串中双引号的频率。我发现我需要在字符串中使用双引号 (") 比在字符串中使用单引号 (') 更频繁。为了减少所需的字符转义数,我更喜欢使用单引号分隔符。引用。这是不言自明的,但要澄清一下,为什么按 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


在您回答这个问题之前,已知 PHP 中单引号与双引号的性能差异为零年:nikic.github.io/2012/01/09/…
您发现字符串中的双引号多于单引号?有趣的。我不记得上次我的字符串中有双引号是什么时候了。
不断地。在过去的 10 年中,作为一名全栈开发人员,我发现自己需要在字符串中使用双引号的频率是单引号的 10 倍。 JavaScript 最常见的示例是属性选择器只能使用双引号,因此 document.querySelector("[name^='myname']") 根本不起作用,而 document.querySelector('[name^="myname"]') 可以完美运行。
@DustinPoissant 什么??在哪个浏览器上??
A
Ardent Coder

如果都一样,也许使用单引号会更好,因为它不需要按住 shift 键。更少的击键 == repetitive strain injury 的机会更少。


好吧,至少在银河公共布局上。 (安静)
RSI 的风险和击键次数与编码标准有什么关系?
如此多的意见以至于单引号和双引号之间没有区别,但只有一个阐明击键次数相差两倍。我们需要很多报价。我可以补充一下,它可能需要更多的神经元来激发我们大脑中双引号的模式识别吗?
我不同意。显示的字符和输入它们的方式是两个不同的东西。您个人可能喜欢某种需要按住 shift 键以获得双引号的输入机制这一事实并不意味着 OP 喜欢使用相同的输入机制。
不会撒谎,RSI 是我尽可能使用单引号的主要原因。减少小指疼痛!
S
Stuart

实际上,最好的方式是谷歌推荐的方式。双引号: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,都使用双引号,我认为整个网络的一致性更好,所以正确的答案恕我直言也是“双引号”。
但为什么!?为什么是 " 而不是 '!???
@San 一致性,主要是。它遵循美国英语标准,双引号用于引号,单引号用于子引号。
D
David Thomas

在 HTML 中,我认为使用 " 还是 ' 并不重要,但应该在整个文档中始终如一地使用它。

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

这使我更容易阅读和检查。如果您的使用对您来说比我的更有意义,则无需更改。但是,对我来说,你的代码会感觉很乱。一切都是个人的。


为什么需要始终如一地使用它?只是为了可读性?
因为这样更容易避免错误。
我也经常使用 " 属性,但其他时候我在 PHP 代码中编写代码,我更喜欢 echo 使用 " 以允许解析。如果使用 ',则此回显中的任何 html 属性都更具可读性。当然它并不一致,但是没有所有反斜杠会容易得多。
任何对你有用的都可以;保持一致并不意味着“总是做 X”,它只是意味着“在情况 X 这样做”,一致性可以是上下文感知的;并且最好这样使用。
A
Alan Dong

对 HTML 使用双引号

IE

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

对 JavaScript 使用单引号

IE

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

R
Randy Tang

我知道很多人不会同意,但这就是我所做的,我真的很喜欢这样的编码风格:我实际上不会在 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>

背后有原因吗?或者你只是“真的很喜欢这种编码风格”?
没有引号的 HTML 看起来更干净(文件大小更小)。这是唯一的原因,没有别的。此外,我真的看不出要求 every 属性带有引号的意义。为什么不能省略它以节省麻烦?甚至 w3.org 也接受不带引号的属性值 (w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted)。 简单胜于复杂。 引用是某种宗教吗?
不,没有我知道的宗教。我已经使用 HTML 很长一段时间了,以前从未见过您使用过的样式......因此我问了。
此外,HTML 缩小器也会去除不必要的引号。
在属性值周围省略引号的问题在于,不同的标准有不同的需要引用的字符列表。例如,HTML4 规定只有由字母、数字、破折号和点组成的值可以不加引号,但 HTML5 表示除了空格和“ ' ` < = > 之外的任何值都可以,所以你应该小心,尤其是在旧浏览器上!
A
Aryan Beezadhur

我遇到了 Bootstrap 的问题,我必须使用双引号,因为单引号不起作用。

class='row-fluid' 使最后一个 <span> 低于其他 <span>,而不是在最右边很好地坐在它们旁边。 class="row-fluid" 工作。


P
Paul Taylor

它对 html 没有影响,但是如果您使用另一种编程语言动态生成 html,那么一种方法可能比另一种更容易。

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

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

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

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

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


在 servlet 上做了两次实习。我正在分析我的代码,直到现在我才开始意识到双引号、单引号和字符串连接的现实。我以前研究的网站在html中使用双引号,在java中使用单引号。甚至没有意识到。很高兴我终于明白了...
M
Mauro

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


a
a1204773

在以下情况下使用 " 而不是 '

<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

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

我是这里的新手,但我只在第一个引号内使用双引号时才使用单引号。如果我不清楚,我会向您展示示例:

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

我希望我有所帮助。


t
tfont

这里有很多很棒的有见地的回复!足以让任何人做出明确和个人的决定。

我只想指出一件对我来说一直很重要的事情。把这个和一粒盐一起吃!

双引号适用于具有多个单相的字符串,例如 "one two",而不适用于 'one''two' 的单引号。这可以追溯到 C 和 C++。
reference here 或进行您自己的在线搜索)

这就是真正的区别。

有了这个原则(这个不同),解析成为可能,例如 "{{'a','b'},{'x','y'}}"/[^\r\n]*[\r\n]"(需要独立于空间,因为它是表达式)或更着名的 HTML 特定 title = "Hello HTML!"style = "font-family:arial; color:#FF0000;"

这里有趣的是,HTML(来自 XML 本身)由于表达特性而通常采用双引号,即使它是单个字符(例如数字)或单相字符串。

正如 NibblyPig 所指出的那样:
" 作为顶层而 ' 作为第二层,因为 "'a string here'" 是有效的,并且符合 W3 标准(这是网络)并且很可能永远不会改变。

为了保持一致性,双引号被明智地使用,但只能根据偏好完全正确。


B
Brombomb

在 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 Reference

(使用双引号。)无论您倾向于更频繁地使用哪个,一致性都很重要。


JavaScript 不计算字符串中的变量名。 JavaScript 中的 ' 和 " 没有区别。
C
C.D. Reimer

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

HTML 不关心你使用哪一个。但是,如果您在 PHP 脚本中编写 HTML,您应该坚持使用双引号,因为您需要将它们转义(即 \"whatever\")以避免混淆您自己和 PHP。


我知道很多编程语言,但其中一种是正确的。
@mikl C# 和 Java 中的一般做法是双引号中的字符串和单引号中的字符。但这没有验证这个答案。除非这是对另一个问题的答案。