Почему "строка в одинарных кавычках предпочтительнее строки в двойных кавычках". в JS?
При использовании gjslint я получил подсказку: "Строка в одинарных кавычках предпочтительнее строки в двойных кавычках".
Так почему же? Я немного запутался с этим. Почему одинарные кавычки предпочтительнее?
Надеюсь получить помощь. Спасибо всем.
4 ответа
Это просто чье-то мнение.
Многие люди предпочитают одиночные кавычки, но многие другие люди предпочитают двойные кавычки. Я склонен использовать двойные кавычки просто по привычке из других языков, но у меня нет сильных предпочтений: я готов измениться, если услышу о веской причине, почему одинарные кавычки лучше, но на сегодняшний день я ' мы даже не услышали вескую причину, не говоря уже о веской причине.
Даже в Руководстве по стилю Google JavaScript говорится, что одинарные кавычки предпочтительны без веской причины:
"Для согласованности одинарные кавычки (') предпочтительнее двойных кавычек ("). Это полезно при создании строк, включающих HTML "
(Затем приводится очень короткий пример строки, которая даже не включает HTML.)
Многие люди считают, что XHTML действителен только с двойными кавычками, но это не так: спецификация XHTML допускает и то, и другое. (Сказав это, 98% XML, с которым я столкнулся, включая XHTML, используют двойные кавычки.)
В любом исходном файле я стараюсь придерживаться одного или другого, но если строка кода в середине требует много встроенных кавычек, я был бы рад изменить только на эту строку, чтобы избежать большого количества экранирования в этой строке.
ОБНОВЛЕНИЕ: Только что вспомнил, что JSON действителен только с двойными кавычками. Очевидно, что JSON не является JavaScript, но все же это причина, по которой (а) некоторые могут предпочесть двойные кавычки в своем JavaScript, чтобы объектные литералы выглядели как JSON, и (б) некоторые могли бы предпочесть одинарные кавычки, чтобы они могли вручную кодировать JSON без необходимость избежать двойных кавычек. (Нет, я не рекомендую вручную кодировать JSON, но я видел, что это сделано.)
Если вы используете одинарные кавычки, вам не нужно избегать двойных кавычек в вашем html.
Например...
С помощью одинарных кавычек вы можете сделать это
var a = '<a href="something.html" rel="yes" title="whatever">a link/a>';
с двойными кавычками вы должны были бы избежать тех, кто находится внутри двойных кавычек, например, так
var a = "<a href=\"something.html\" rel=\"yes\" title=\"whatever\">a link/a>";
Гораздо больше работы, сложнее в обслуживании и легче совершать ошибки.
На моей клавиатуре есть клавиша "/", поэтому я могу легко ввести одинарную кавычку, но для двойной кавычки нужно нажать клавишу Shift.:)
Что касается предупреждений JSLint, то это просто попытка применить произвольный стандарт, чтобы продвигать более согласованный стиль кодирования, так же, как это делается в других вопросах пробелов и отступов.
С точки зрения производительности, согласно http://jsperf.com/ вы получаете почти одинаковую производительность для обоих браузеров, в других - одинаковую производительность.
В jsperf есть много тестов, и все они получают почти одинаковый результат:
- http://jsperf.com/double-or-simple-quote
- http://jsperf.com/quotes-compare
- http://jsperf.com/jquery-double-vs-single-quotes
- http://jsperf.com/search?q=quote
В заключение я думаю, что использование одинарных или двойных кавычек - дело вкуса, а не производительности.
С уважением.