单引号和双引号的选择?

3

既然在使用属性或字符串时,HTML以及像ASP.NET和PHP这样的语言都可以接受单引号和双引号,为什么有些人会交替使用它们呢?

据我了解,在可能的情况下使用双引号是语法上正确的,而在需要嵌入双引号进行内联逻辑时则使用单引号。

我是否漏掉了什么?

例如:

HTML

<a href='http://google.com'>Google</a>

PHP

<? echo 'Hello World!'; ?>

ASP.NET

<form id='myForm' runat='server'></form>

1
你正在使用哪种编程语言?HTML只允许使用单引号,ASP.NET只允许使用双引号(假设你在使用C#?),而PHP允许使用两种引号,并为每种引号都有不同的语义。 - Billy ONeal
在 .net 语言中有所不同。单引号用于字符,双引号用于字符串。在 c# 中使用 @ 前缀的字符串类似于 javascript 中的单引号。@"No esacape needed" - Paco
3
HTML 可以使用单引号或双引号。参考链接:http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2 - mlibby
@Billy ONeal,正如以下链接所述...有一个区别..."ASP.NET Web页面被分为声明性标记和源代码。声明性标记部分包括HTML、Web控件和数据绑定语法;代码部分包含用Visual Basic或C#编写的事件处理程序。" - http://alturl.com/5hqrm(微软自己的www.asp.net) - Benny
@Benny:你的观点是什么?我从未质疑过ASP.NET将代码与HTML混合。但是混合在其中的代码要么是C#,要么是VB。(“Web控件,数据绑定语法”是C#或VB.NET) - Billy ONeal
显示剩余3条评论
7个回答

2
从技术角度来看,在PHP中,单引号比双引号更快,因为你不需要解析字符串内部的内容。
编辑:所以,双引号会自动转换为单引号,但是如果你在双引号字符串中使用变量替换,那么性能就会受到影响。
参考链接:http://www.codeforest.net/php-myth-busters-using-single-quotes-on-string-is-faster-then-double-quotes
无论如何,在这个问题还没有定论之前,我们建议保险起见使用单引号 :)

@Col Shrapnel 单引号的速度更快。@vic 差异在统计学上几乎没有显著性。单引号与双引号之间的优势更多地在于程序员。使用其中一个相对于另一个节省时间的大部分是在涉及转义时,因为程序员需要花费更少的时间进行输出转义:'<div id="">...' vs "<div id=\"\">" - zzzzBov

1

在HTML中,“为什么”除了显而易见的情况(即字符串包含双引号时使用单引号更方便,反之亦然)外,我认为无法回答。

在PHP中,当您不想要任何特殊插值或转义字符时,使用单引号字符串更方便。

我的个人偏好是在HTML中始终使用双引号,在PHP中始终使用单引号,除非需要插值。因此,我认为单引号字符串在PHP中类似于“常量”,而双引号字符串意味着其他事情正在发生。

<opinion>但是为什么有些人会随意选择两者之间?可能是因为他们缺乏纪律性,因此不是很好的程序员。</opinion>


0
我认为对于大多数人来说,单引号和双引号是可以互换使用的,而并没有真正理解它们之间的区别。
两者都用于创建/界定字符串。
'Hello'

"Hello"

两者都是字符串,在这种情况下使用时被视为相同。

区别在于处理方式。从技术上讲,单引号字符串在创建并存储到内存中时不会被处理。它们被视为原样并转换为字符串。

双引号字符串在创建并存储到内存中时会被处理。这就是为什么您可以将变量放入双引号字符串中,其值将被放入其中,但在单引号字符串中,字面变量被放入其中。对于大多数事情来说,如果您使用单引号或双引号没有真正的区别,除非创建带有变量、函数调用等的字符串,并且为了节省一些毫秒的处理时间。


0

基本上,选择权在你手中。但为了可读性和可维护性,请选择一种形式并坚持使用。


0

来自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中,字符串遵循同样的原则 - 可替换的单引号/双引号。


0

当我将HTML嵌入字符串中时,我发现使用单引号很有优势,尤其是在处理模板时。以下是一个例子:

public string EmailTemplate = 
@"<div style='color:red'>HEY {0}! BUY MORE STUFF</div>"

// later in code

instanceOfStringBuilder.AppendFormat(EmailTemplate, firstNameVariable); 

我对于单引号或双引号哪个更好没有任何层次结构。这纯粹是一致性和编程上可行性的问题。


0

我同意@stillstanding在HTML中可互换性的问题。然而,在PHP中,当我需要解析字符串中的变量时,我会使用双引号。考虑以下内容:

<?php
    $id = 123;
    echo "Your id is $id<br />";
    echo 'Your id is $id';
?>

这将输出

你的id是123

你的id是$id


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