单引号而不是双引号?
Posted
技术标签:
【中文标题】单引号而不是双引号?【英文标题】:Single Quotes Instead of Double Quotes? 【发布时间】:2011-05-18 02:30:15 【问题描述】:既然 html 以及 ASP.NET 和 php 等语言在使用属性或字符串时都可以接受,为什么有些人可以互换使用单引号和双引号?
据我了解,在可能的情况下使用双引号在语法上是正确的,当您需要为内联逻辑嵌入双引号时使用单引号。
我有什么遗漏吗?
例如:
HTML
<a href='http://google.com'>Google</a>
PHP
<? echo 'Hello World!'; ?>
ASP.NET
<form id='myForm' runat='server'></form>
【问题讨论】:
您真正处理的是哪种语言? HTML 只允许单引号,ASP.NET 只允许双引号(假设您使用的是 C#?),而 PHP 允许两者,并且每个都有不同的语义。 在 .net 语言中有所不同。单引号用于字符,双引号用于字符串。在 c# 中使用 @ 为字符串添加前缀类似于 javascript 中的单引号。 @“无需逃避” @Billy ONeal 和 @Paco,注意我说的是 ASP.NET,而不是 C#。 C# 肯定有单对双的限制,但 ASP.NET 的标记允许两者。 @Billy ONeal,HTML 允许单引号和双引号。 w3.org/TR/html4/intro/sgmltut.html#h-3.2.2 @Benny: Err.. ASP.NET 是 C# 或 VB。 ASP.NET 运行时本身并没有指定关于相当的任何内容。 @mcl:嗯,我今天学到了一些东西/ 【参考方案1】:从技术上讲,在 PHP 中单引号更快,因为您不需要解析其中的内容。
编辑: 因此双引号会自动转换为单引号,但如果您在双引号字符串中进行变量替换,那就是您受到性能影响的时候:
http://www.codeforest.net/php-myth-busters-using-single-quotes-on-string-is-faster-then-double-quotes
无论哪种方式,要在陪审团不在此范围内回答 OP 的问题,请谨慎行事 (TM) 并使用单引号 :)
【讨论】:
@Col Shrapnel 单引号基准测试更快。 @vic 差异几乎没有统计学意义。单引号与双引号的优势更多地在于程序员。使用一个与另一个相比节省的大部分时间是在涉及转义时,因为程序员必须花更少的时间进行输出转义:'<div id="">...'
vs "<div id=\"\">"
【参考方案2】:
来自 W3C:http://www.w3.org/TR/html4/intro/sgmltut.html
All attribute values [should] be delimited using either double quotation
marks (ASCII decimal 34) or single quotation marks (ASCII decimal 39).
Single quote marks can be included within the attribute value when the
value is delimited by double quote marks, and vice versa.
PHP 中的字符串遵循相同的原则 - 可互换的单引号/双引号。
【讨论】:
【参考方案3】:我想说,对于大多数人来说,单引号和双引号在没有真正理解差异的情况下可以互换使用。
两者都用于创建/描绘字符串。
'Hello'
"Hello"
两者都是字符串,在这种情况下使用时的处理方式相同。
处理上的差异。从技术上讲,单引号字符串在创建并存储到内存时不会被处理。它们被照原样制成字符串。
双引号字符串在创建并存储到内存时进行处理。这就是为什么您可以将变量放入双引号字符串并放入它的值,但在单引号字符串中放入文字变量。对于大多数情况,如果您唱单引号或双引号,除非在创建带有变量、函数调用等的字符串以及在处理过程中节省一些毫秒。
【讨论】:
【参考方案4】:基本上,选择权在你。但是为了可读性和可维护性,选择一种形式并坚持下去。
【讨论】:
【参考方案5】:当我将 html 嵌入到字符串中时,我发现使用单引号是有利的,主要是在处理模板时。这是一个例子:
public string EmailTemplate =
@"<div style='color:red'>HEY 0! BUY MORE STUFF</div>"
// later in code
instanceOfStringBuilder.AppendFormat(EmailTemplate, firstNameVariable);
对于单引号或双引号是否“更好”,我没有任何层次结构。这纯粹是一个保持一致并具有以编程方式工作的东西的问题。
【讨论】:
【参考方案6】:我同意@stillstanding 关于 HTML 内可互换性的问题。但是,在 PHP 中,我在需要解析字符串中的变量的情况下使用双引号。考虑一下:
<?php
$id = 123;
echo "Your id is $id<br />";
echo 'Your id is $id';
?>
这将输出
你的 id 是 123
你的 id 是 $id
【讨论】:
【参考方案7】:在 HTML 中,我认为除了明显的情况外,无法回答“为什么”:当字符串包含双引号时,单引号字符串更方便,反之亦然。
在 PHP 中,当您不需要任何特殊的插值或转义字符时,单引号字符串更方便。
我个人的偏好是在 HTML 中总是使用双引号,并且在 PHP 中总是使用单引号,除非我需要插值。因此,我认为单引号字符串是 PHP 中的“常量”,而双引号字符串暗示正在发生其他事情。
【讨论】:
以上是关于单引号而不是双引号?的主要内容,如果未能解决你的问题,请参考以下文章