Почему "строка в одинарных кавычках предпочтительнее строки в двойных кавычках". в 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 есть много тестов, и все они получают почти одинаковый результат:

В заключение я думаю, что использование одинарных или двойных кавычек - дело вкуса, а не производительности.

С уважением.

Другие вопросы по тегам