Одиночные и двойные кавычки («против»)

250

Я всегда использовал одинарные кавычки, когда писал свой HTML вручную. Я работаю с большим количеством визуализированных HTML, которые всегда используют двойные кавычки. Это позволяет мне определить, был ли HTML написан вручную или сгенерирован. Это хорошая идея?

Какая разница между двумя? Я знаю, что они оба работают и поддерживаются всеми современными браузерами, но есть ли реальная разница, когда один действительно лучше другого в разных ситуациях?

ctrlShiftBryan
источник
5
Чтобы ответить на вопрос о том, следует ли использовать одиночные и двойные кавычки в качестве средства для определения рукописного и сгенерированного HTML, нет, это, вероятно, не очень хорошая идея. Хотя несовместимый код (в некоторых местах используется single, в других - double), вероятно, написан от руки, я уверен, что многие люди (включая меня) везде используют двойные кавычки, но наш код определенно не генерируется компьютером; )
Доктор J
Ответ @ Айто действительно правильный и должен быть принят ... Лично я использую одинарные кавычки для коротких атрибутов, таких как отдельные ключевые слова / теги, URL и ссылки; все, что не предназначено для чтения человеком, на самом деле. Для более длинных текстов или всего, что может включать пробелы или одинарные кавычки / апострофы - в качестве содержимого я использую двойные кавычки. Это просто вопрос вашего стиля (или используемого вами руководства по стилю)
cedbeu
1
Проверьте 10 основных веб-сайтов и посмотрите, что использует большинство из них, такие как stackoverflow, youtube / google, wikipedia. Пока у меня проблемы с поиском крупных сайтов, которые используют одинарные кавычки.
Тимо Хуовинен

Ответы:

391

Организация w3 сказала :

По умолчанию SGML требует, чтобы все значения атрибутов были разделены с помощью двойных кавычек (десятичный ASCII 34) или одинарных кавычек (десятичный ASCII 39). Одинарные кавычки могут быть включены в значение атрибута, когда значение ограничено двойными кавычками, и наоборот. Авторы также могут использовать числовые ссылки на символы для представления двойных кавычек ( ") и одинарных кавычек ( '). Для двойных кавычек авторы также могут использовать ссылку на символьную сущность ".

Так что ... похоже нет разницы. Зависит только от вашего стиля.

Aito
источник
38
а согласованность (либо с ', либо с'), скорее всего, приведет к более высокой степени сжатия в случае, если вы обслуживаете сжатые (gzip, deflate) страницы
cherouvim
2
@ Айто, это для SGML. Для HTML не все значения атрибутов должны быть разделены
Pacerier
4
Я предлагаю, хотя один над двойным - зачем использовать два, когда можно сделать работу.
Уджвал Сингх
7
@JohnHunt: только что сделал быстрый тест на 1823-байтовом js-файле (случайная модель магистрали из случайного приложения). Вывод gzip, если все кавычки одинаковы (либо, 'либо "), составил 809 байт. Их смешивание увеличило объем до 829 байт. Это может быть неуместно для вас, но это не значит, что оно не имеет значения для всех.
cherouvim
3
Если кто-то скажет «о, это такой низкий потенциал, вероятно, не имеет отношения к сотне», возможно, не имеет отношения к делу, наступает смерть тысячи игл. При разумных усилиях все, что вы можете сэкономить, стоит сохранить IMO.
контракте говорится, что я прав
67

Я использую "в качестве высшего и 'второго уровня, как я полагаю, большинство людей. Например

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

В этом примере вы должны использовать оба, это неизбежно.

NibblyPig
источник
38
Я делаю это также, но этого можно избежать, если вы избегаете встраивания JavaScript в HTML.
Черувим
4
В других ситуациях, не связанных со встроенным JavaScript, могут потребоваться одинарные кавычки, например, при использовании пользовательских data-*атрибутов. В зависимости от вашего приложения и того, как вы используете data-*атрибуты, вам может понадобиться использовать 'внутри ". Иногда мы используем их для отслеживания событий Google Analytics:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Джейк Уилсон
3
Рассмотримvar x = "<a href='" + url + "'>click me</a>";
NibblyPig
4
Можно легко избежать, как это: <a onclick="alert(\"Clicked!\")">. Однако, это намного менее читабельно.
fabspro
2
Однако я не совсем уверен, что это официально поддерживается SGML и HTML5.
fabspro
26

Соглашения о цитировании для веб-разработчиков

Краткий ответ

В HTML использование одинарных кавычек (') и двойных кавычек (") взаимозаменяемо, различий нет.

Но согласованность рекомендуется, поэтому мы должны выбрать синтаксическое соглашение и использовать его регулярно.

Длинный ответ

Веб-разработка часто состоит из множества языков программирования. 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. (й). Получено 26 ноября 2014 г. с сайта http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP

Дастин Пуассан
источник
3
Известно, что разница в производительности с одинарными и двойными кавычками в PHP составляла ноль лет до того, как вы ответили на этот вопрос: nikic.github.io/2012/01/09/…
Конор Манкон
1
Вы находите больше двойных кавычек, чем одинарные в своих строках? Интересный. Я не могу вспомнить, когда в последний раз у меня были двойные кавычки в моих строках.
Zonker.in.Geneva
Постоянно. За последние 10 лет, будучи разработчиком с полным стеком, мне приходилось использовать двойные кавычки в строке в 10 раз чаще, чем одинарные. Наиболее распространенный пример для JavaScript - селекторы атрибутов, которые работают ТОЛЬКО с двойными кавычками, поэтому document.querySelector("[name^='myname']")не работают вообще, хотя document.querySelector('[name^="myname"]')работают отлично.
Дастин Пуассан
@ DustinPoissant WHAAAT ?? В каком браузере ??
Мистер Листер
14

Если все одинаково, возможно, лучше использовать одинарные кавычки, поскольку для этого не требуется удерживать клавишу Shift. Меньше нажатий клавиш == меньше шансов RSI.

stko
источник
2
ну, по крайней мере, на Галактической Общей компоновке. (hush-hush)
n611x007
1
Какое отношение имеет риск RSI и количество нажатий клавиш к стандартам кодирования?
Диб
так много мнений, что нет разницы между одинарными и двойными кавычками, а только одно, которое проясняет, что количество нажатий клавиш отличается в два раза. И нам нужно много цитат. Могу ли я добавить с предположением, что, возможно, потребуется больше нейронов, чтобы запустить распознавание двойных кавычек в нашем мозгу?
Роланд
Это не так для французских клавиатур.
Tokeeen.com
11

В HTML я не верю, имеет ли это значение, используете ли вы "или нет ', но его следует использовать последовательно во всем документе.

Мое собственное использование предпочитает использовать атрибуты / html ", тогда как все javascript используют 'вместо этого.

Для меня это немного облегчает чтение и проверку. Если ваше использование имеет больше смысла для вас, чем мое, нет необходимости в изменениях. Но, для меня, ваш код будет казаться грязным. Это личное это все.

Дэвид говорит восстановить Монику
источник
Почему его нужно использовать последовательно? Просто для удобства чтения?
timetofly
Потому что так легче избежать ошибок.
Дэвид говорит восстановить Монику
2
Я также часто использую атрибуты ", но иногда я пишу код в PHP-коде, где я бы предпочел echoиспользовать "их, чтобы разрешить синтаксический анализ. Любые html-атрибуты в этом эхо более читабельны, если использовать 's. Конечно, это не соответствует, но это намного проще без обратной косой черты.
timetofly
3
Все, что работает для вас, хорошо; Быть последовательным не означает «всегда делай X», это просто означает, что «в ситуации X делай так», последовательность может быть контекстно-зависимой; и лучше всего используется как таковой.
Дэвид говорит восстановить Monica
9

На самом деле, лучший способ - это то, что рекомендует Google. Двойные кавычки: 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 Quoted Advice от Google: «Использование действительного HTML - это измеримый базовый атрибут качества, который помогает узнать о технических требованиях и ограничениях и обеспечивает правильное использование HTML. "

Стюарт
источник
Подавляющее большинство веб-сайтов, с которыми я сталкивался до сих пор, включая stackoverflow, используют двойные кавычки, я думаю, что согласованность в сети к лучшему, поэтому правильный ответ IMHO также "двойные кавычки".
Тимо Хуовинен
2
Но почему!? Почему "кончено '?
Сан -
2
@San согласованность, в основном. Из американского английского стандарта следует, что двойные кавычки предназначены для кавычек, а одинарные - для кавычек.
Нильсвх
6

Я знаю, что многие люди не согласятся, но это то, чем я занимаюсь, и мне действительно нравится такой стиль кодирования: я фактически не использую цитаты в 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>
Рэнди Тан
источник
1
Есть ли причина позади? Или вам просто "действительно нравится такой стиль кодирования"?
Bugs Bunny
4
Без кавычек HTML выглядит намного чище (а размер файла немного меньше). Это единственная причина и ничего больше. Кроме того, я действительно не вижу смысла требовать, чтобы у каждого атрибута были кавычки. Почему это не может быть просто опущено, чтобы спасти проблему? Даже w3.org принимает значения атрибутов без кавычек ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Простое лучше, чем сложное. Это какая-то религия иметь цитаты?
Рэнди Тан
5
Нет, никакой религии, о которой я знаю. Я уже давно занимаюсь HTML и никогда не видел, чтобы твой стиль использовался раньше ... поэтому я и спросил.
Bugs Bunny
1
Кроме того, HTML-минификаторы также удаляют ненужные кавычки.
Нимрод
2
Проблема с пропуском кавычек вокруг значений атрибутов заключается в том, что разные стандарты имеют разные списки символов, которые необходимо заключать в кавычки. Например, HTML4 говорит, что только значения, состоящие из букв, цифр, тире и точек, могут оставаться без кавычек, но HTML5 говорит, что все идет, кроме пробелов и "'` <=>, поэтому вы должны быть осторожны, особенно в старых браузерах!
Мистер Листер
5

Использование двойных кавычек для HTML

т.е.

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

Использование одинарных кавычек для JavaScript

т.е.

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');
Алан Донг
источник
2

У меня была проблема с использованием Bootstrap, когда использование двойных кавычек имело значение по сравнению с использованием одинарных кавычек (которые не работали). class = 'row-liquid' вызвал у меня проблемы, из-за которых последний промежуток упал ниже других промежутков, а не сидел рядом с крайним правым краем, тогда как class = "row-Fluid" работал.

MikeP
источник
1

если вы пишете asp.net, то иногда вы должны использовать двойные кавычки в операторах Eval и одинарные кавычки для разграничения значений - это главным образом для того, чтобы встроенный код C # знал, что он использует строку в контейнере eval, а не символ. Лично я бы использовал один или другой в качестве стандарта и не смешивал их, это выглядит грязно, вот и все.

Mauro
источник
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
a1204773
источник
3
В вашем случае «присваивания html-содержимого переменной js», я обычно предпочитаю делать обратное: var html = '<input name="username" />';и поддерживать согласованность с остальной частью html :)
Erenor Paz
1

Это не имеет значения для html, но если вы генерируете html динамически с другим языком программирования, то один путь может быть проще, чем другой.

Например, в Java двойная кавычка используется для обозначения начала и конца строки, поэтому, если вы хотите включить двойную кавычку в строку, вы должны экранировать ее обратной косой чертой.

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

У вас нет такой проблемы с одинарной кавычкой, поэтому использование одинарной кавычки делает код на Java более читабельным.

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

Особенно, если вам нужно писать html-элементы со многими атрибутами. (Обратите внимание, что я обычно использую библиотеку, такую ​​как jhtml, для написания html на Java, но это не всегда практично)

Пол Тейлор
источник
Сделал две стажировки по сервлетам. Я анализировал свой код, и только теперь я начал осознавать реальность двойных кавычек, одинарных кавычек и конкатенаций строк. Сайт, который я использовал для изучения, использовал двойные кавычки в html и одинарные кавычки в java. Даже не осознавал. Рад, что я наконец получил это ...
Майкл
0

Я новичок здесь, но я использую одинарную кавычку только тогда, когда я использую двойную кавычку внутри первой. Если мне не ясно, я покажу вам пример:

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

Я надеюсь, что помог.

Марцин С
источник
-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 Справочник

(Используйте двойные кавычки.) Согласованность важна вне зависимости от того, какой способ вы используете чаще.

Raiden
источник
13
JavaScript не оценивает имена переменных в строках. Нет никакой разницы между «и» в JavaScript.
Джон Меллор
-9

Двойные кавычки используются для строк (т. Е. «Это строка»), а одинарные кавычки используются для символа (т. Е. «A», «b» или «c»). В зависимости от языка программирования и контекста вы можете использовать двойные кавычки для символа, но не одинарные для строки.

HTML не волнует, какой вы используете. Однако, если вы пишете HTML-код внутри сценария PHP, вам следует придерживаться двойных кавычек, поскольку вам нужно будет избегать их (то есть \ "что угодно \"), чтобы не перепутать себя и PHP.

CD Reimer
источник
Я знаю немало языков программирования, но на одном это правда.
Микл
1
Общая практика @mikl в C # и Java - это строки в двойных кавычках и символы в одинарных кавычках. Но это не дает подтверждения этому ответу. Если только это не ответ на другой вопрос.
Evorlor