почему " строка в одинарных кавычках предпочтительнее строки в двойных кавычках.- в js?
При использовании gjslint я получил подсказку: "строка в одинарных кавычках предпочтительнее строки в двойных кавычках".
Так почему же? Меня это немного смущает. Почему предпочтение отдается одинарным кавычкам?
Надеюсь получить некоторую помощь. Спасибо всем.
4 ответа:
Это просто чье-то мнение.
Многие люди предпочитают паленые кавычки, но многие другие предпочитают двойные кавычки. Я склонен использовать двойные кавычки просто по привычке из других языков, но у меня нет сильного предпочтения: я готов измениться, если услышу убедительную причину, почему одинарные кавычки лучше, но на сегодняшний день я даже не слышал хорошей причины, не говоря уже о убедительной причине.
Даже в руководстве по стилю Google JavaScript говорится, что одинарные кавычки предпочтительны без указания веской причины:
"для согласованности одинарные кавычки (' ) предпочтительнее двойных кавычек ("). Это полезно при создании строк, содержащих HTML "
(далее приводится очень короткий пример строки, которая даже не содержит HTML.)
Многие люди, похоже, считают, что XHTML допустим только с двойными кавычками, но это не так: спецификация XHTML допускает и то, и другое. (Сказав это, 98% XML, который я запустил во всем, включая XHTML, использует двойные кавычки.)
В любом исходном файле я стараюсь придерживаться одного или другого, но если строка кода в середине нуждается в большом количестве встроенных кавычек, я был бы рад изменить только эту строку, чтобы избежать большого количества экранирования в этой строке.
UPDATE: только что вспомнил, что JSON допустим только с двойными кавычками. Очевидно, что JSON-это не JavaScript, но все же это причина, по которой (a) некоторые могут предпочесть двойные кавычки в своем JavaScript, поэтому эти объектные литералы выглядят как JSON, и (b) некоторые могут предпочесть одинарные кавычки, чтобы они могли вручную кодировать 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
В заключение я думаю, что использование одинарных или двойных кавычек-это просто вопрос вкуса, а не производительности.
С уважением.