【问题标题】:Single vs Double quotes (' vs ")单引号和双引号(' vs ")
【发布时间】:2011-01-23 07:18:05
【问题描述】:

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

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

【问题讨论】:

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

标签: html syntax


【解决方案1】:

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

【讨论】:

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

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)

其他需要考虑的事项

  1. 字符串中双引号的频率。我发现我需要在字符串中使用双引号 ("),而不是在字符串中使用单引号 (')。为了减少所需的字符转义数,我倾向于使用单引号分隔符。
  2. 单引号更容易。这是相当不言自明的,但要澄清一下,为什么按 SHIFT 键的次数比你必须的次数多。

我的约定

基于对 PHP 的理解,我已经设置了一个约定(为我自己和我公司的其他人),默认情况下字符串将被表示为单引号以进行服务器优化。如果在属性中需要引号(例如 JavaScript),则在字符串中使用双引号,例如:

<button onClick='func("param");'>Press Me</button>

当然,如果我们在 PHP 中并希望解析器处理字符串中的 PHP 变量,我们应该有意使用双引号。 $a='Awesome'; $b = "Not $a";

来源

PHP 中的单引号与双引号。 (未注明日期)。检索于 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 什么??在哪个浏览器上??
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

    双引号适用于具有多个单相的字符串,例如"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 标准(这是针对网络的)并且很可能永远不会改变。

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

    【讨论】:

      【解决方案5】:

      这对 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中使用单引号。甚至没有意识到。很高兴我终于明白了...
      【解决方案6】:

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

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

      希望我能帮上忙。

      【讨论】:

        【解决方案7】:

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

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

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

        【讨论】:

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

        其实,最好的方式是谷歌推荐的方式。双引号: 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 一致性,主要是。它遵循美式英语标准,双引号用于引号,单引号用于子引号。
        【解决方案9】:

        我知道 很多人 不会同意,但这就是我所做的,我真的很喜欢这样的编码风格:我实际上不会在 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 规定除了空格和“ ' ` 之外的任何值都可以,所以你应该小心,尤其是在旧浏览器上!
        【解决方案10】:

        在 HTML 中使用双引号

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

        在 JavaScript 中使用单引号

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

        【讨论】:

          【解决方案11】:

          当:

          <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 = '&lt;input name="username" /&gt;'; 并与其他 html 保持一致:)
          【解决方案12】:

          在 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 中的 ' 和 " 没有区别。
          【解决方案13】:

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

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

          【讨论】:

          • 我知道不少编程语言,但其中一种是正确的。
          • @mikl 在 C# 和 Java 中的一般做法是双引号中的字符串和单引号中的字符。但这没有验证这个答案。除非这是另一个问题的答案。
          【解决方案14】:

          w3 组织said:

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

          所以...似乎没有区别。只取决于你的风格。

          【讨论】:

          • 如果您提供压缩(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 分之一秒。今天,在网络上?这无关紧要。时期。集成专门的北极或空间通信的东西,也许不是。网络,是的,无关紧要。
          【解决方案15】:

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

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

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

          【讨论】:

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

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

          【讨论】:

            猜你喜欢
            • 2011-02-15
            • 2014-09-28
            • 2013-07-12
            • 2013-12-14
            • 2013-02-16
            • 2013-08-25
            • 2011-06-02
            • 1970-01-01
            相关资源
            最近更新 更多