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

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

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

153989 次浏览

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

在HTML中,我认为使用"'并不重要,但它应该在整个文档中一致使用。

我自己的使用倾向于attributes/html使用",而所有javascript使用'代替。

这对我来说,阅读和检查起来稍微容易一些。如果你的使用比我的更有意义,那就没必要改变。但是,对我来说,你的代码将感觉混乱。这只是个人问题。

w3 org :

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

所以…似乎没什么区别。这取决于你的风格。

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

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

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

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

在那个例子中,你必须两者都用,这是不可避免的。

如果都是一样的,也许使用单引号更好,因为它不需要按住shift键。更少的击键==更少的重复性劳损的机会。

在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参考

(使用doublequotes。)无论你更经常使用哪一种,一致性都很重要。

用"而不是'当:

<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

引用Web开发人员的约定

简短的回答

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

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

长回答

Web开发通常由许多编程语言组成。HTML, JS, CSS, PHP, ASP, RoR, Python等。因此,对于不同的编程语言,我们有许多语法约定。通常,从一种语言习得的习惯会跟随我们学习另一种语言,即使我们认为这种习惯不“合适”。例如注释约定。引用惯例对我来说也属于这一类。

但我倾向于将HTML与PHP紧密结合使用。在PHP中,单引号和双引号之间有主要的区别。在PHP中,使用双引号可以直接在字符串的文本中插入变量。当使用单引号时,文本就会原封不动地出现。(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中的单引号和双引号。(无日期)。从http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP中检索,2014年11月26日

我有一个问题与引导,我必须使用双引号,因为单引号不起作用。

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

HTML使用双引号

即。

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

JavaScript中使用单引号

即。

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

我知道很多的人不会同意,但这就是我所做的,我真的很喜欢这样的编码风格:我实际上不使用任何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>
实际上,最好的方法是谷歌推荐的方法。双引号: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks < / p >

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

我在这里是新手,但我只在第一个里面使用双引号时才使用单引号。如果我不清楚,我给你举个例子:

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

我希望我能帮上忙。

这对html没有区别,但如果你用另一种编程语言动态生成html,那么一种方法可能比另一种更容易。

例如,在Java中,双引号用于表示字符串的开始和结束,所以如果你想在字符串中包含双引号,你必须用反斜杠转义它。

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

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

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

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

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

我只想指出一件对我来说一直很重要的事。 < / p >
对此你要持保留态度!

双引号适用于具有多个相位的字符串,如"one two",而不是用于'one''two'的单引号。这可以追溯到C和c++时代。 < / p >
(参考这里或自己在线搜索)

这就是真正的区别。

有了这个原则(这是不同的),解析成为可能,如"\{\{'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)所期望的,并且很可能永远不会改变

为了保持一致性,使用双引号是明智的,但只有根据偏好才完全正确。