单引号和双引号的区别 (' vs ")

293

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

两者之间有什么区别?我知道它们都可以工作,并且所有现代浏览器都支持它们,但在不同情况下是否有真正的区别,其中一个比另一个更好?


2
相关链接:https://dev59.com/DHVC5IYBdhLWcg3wfxU8 和 https://dev59.com/QnVC5IYBdhLWcg3wnCWA。 - ЯegDwight
8
回答这个关于使用单引号还是双引号来区分手写和生成的HTML的问题,不,这可能不是一个好主意。虽然在代码中不一致(在某些地方使用单引号,在其他地方使用双引号)的代码可能是手写的,但我确信许多人(包括我自己)都会到处使用双引号,但我们的代码肯定不是计算机生成的 ;) - Doktor J
@Aito的回答确实是正确的,应该被接受...就我个人而言,我使用单引号来表示短属性,比如单个关键字/标签、URL和引用;实际上,任何不打算供人阅读的内容都可以使用单引号。对于较长的文本或包含空格、单引号/撇号(作为内容)的任何内容,我使用双引号。这只是你的风格问题(或者你使用的样式指南)。 - cedbeu
1
检查10个主要网站并查看它们大多数使用的内容,例如stackoverflow、youtube/google和wikipedia。到目前为止,我很难找到使用单引号的主要网站。 - Timo Huovinen
很多网站在HTML中使用双引号,所以请使用双引号。这也会影响HTML文档的搜索,单引号和双引号都会生效。我规范化使用双引号。 - Fauzan Edris
17个回答

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

1

如果你在编写 asp.net,有时需要在 Eval 语句中使用双引号和单引号来分隔值 - 这主要是为了让 C# 内联代码知道它正在使用 Eval 容器中的字符串而不是字符。个人而言,我会只使用其中一个作为标准,而不是混用,这样更清晰。


0

我在这里是新手,但是当我在第一个引号内使用双引号时,我只使用单引号。如果我没有表达清楚,我给你举个例子:

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

希望我有所帮助。


0

这里有很多伟大的有见地的回复!对于任何人来说,足够清晰和个人化地决定。

我只想指出一件事,这对我一直很重要。
但请带着一颗谨慎的心去看待!

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

而这就是真正的区别。

通过这个原则(这种不同),解析变得可能,例如"{{'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标准(适用于Web),并且很可能永远不会改变。

为了保持一致性,智慧地使用双引号,但仅在偏好时才完全正确。


0

摘要:

两者都可以,双引号更标准,单引号适用于特殊情况。

详细说明:

从技术角度来看,两者都完全可以。从人的角度来看(在团队中工作),保持一致性(始终使用“或')更好,对于压缩也稍微更好。

如果你想更进一步,与世界其他地方保持一致,双引号在HTML中更为广泛使用,而现在单引号在嵌入HTML的Javascript中也很常见,包括现代框架如React/Vue/Svelte:

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

但是还有一些情况下,单引号仍然是一个不错的选择。例如,如果你在 JSON 中嵌入了 HTML。JSON 只支持双引号,所以在这里使用单引号来表示 HTML 是很方便的。这样你就不必一直用 \" 来转义 JSON 的双引号了。

data.json:

{
    "title": "LianBOT",
    "description": "This is a small sumo robot. <a href='https://www.youtube.com/watch?v=deuFnTpAc_c'>Watch it on YouTube</a>."
}

-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 中,单引号和双引号没有区别。 - John Mellor

-10

双引号用于字符串(例如,“this is a string”),单引号用于字符(例如,'a','b'或'c')。根据编程语言和上下文,您可以使用双引号代替字符,但不能使用单引号代替字符串。

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


1
我会很多编程语言,但有一种是真的。 - mikl
2
@mikl 在C#和Java中的一般惯例是用双引号表示字符串,用单引号表示字符。但这并不能为这个答案提供验证。除非这是对不同问题的回答。 - Evorlor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接