console.log("double");
против console.log('single');
Я вижу все больше и больше библиотек JavaScript, использующих одинарные кавычки при обработке строк. Каковы причины использовать один над другим? Я думал, что они в значительной степени взаимозаменяемы.
javascript
string
conventions
aemkei
источник
источник
alert("It's \"game\" time.");
илиalert('It\'s "game" time.');
?Ответы:
Наиболее вероятной причиной использования одинарного или двойного в разных библиотеках является предпочтение программиста и / или согласованность API. Помимо того, чтобы быть последовательным, используйте тот, который лучше всего подходит для строки.
Используя другой тип цитаты в качестве литерала:
Это может быть сложно:
Другой вариант, новый в ES6, это литералы шаблона, которые используют
back-tick
символ:Шаблонные литералы предлагают чистый синтаксис для: интерполяции переменных, многострочных строк и многого другого.
Обратите внимание, что JSON формально указан для использования двойных кавычек, что может стоить учитывать в зависимости от системных требований.
источник
alert('It’s “game” time')
противalert("It’s “game” time")
- не имеет значения. Вам нужно было бы избежать только в (редких) случаях, когда одинарный или двойной простой знак'
,"
на самом деле, уместен.Если вы имеете дело с JSON, следует отметить, что строго говоря, строки JSON должны быть заключены в двойные кавычки. Конечно, многие библиотеки также поддерживают одинарные кавычки, но у меня были большие проблемы в одном из моих проектов, прежде чем я понял, что одиночные кавычки строки на самом деле не соответствуют стандартам JSON.
источник
var jsonString = '{"key1":"value1"}';
(Не то, чтобы я рекомендовал вручную создавать JSON.).stringify()
.Нет лучшего решения ; Тем не менее, я хотел бы утверждать, что двойные кавычки могут быть более желательными в разы:
"
чтобы идентифицировать отрывок цитируемого текста. Если бы мы использовали одну цитату'
, читатель может неверно истолковать ее как сокращение. Другое значение отрывка текста в окружении'
указывает на «разговорный» смысл. Имеет смысл оставаться в соответствии с ранее существовавшими языками, и это может облегчить изучение и интерпретацию кода."I'm going to the mall"
, по сравнению с иным экранированием:'I\'m going to the mall'
.Двойные кавычки означают строку во многих других языках . Когда вы изучаете новый язык, такой как Java или C, всегда используются двойные кавычки. В Ruby, PHP и Perl строки в одинарных кавычках не подразумевают экранирования обратной косой черты, в то время как двойные кавычки поддерживают их.
Запись в формате JSON пишется в двойных кавычках.
Тем не менее, как утверждали другие, очень важно оставаться последовательным.
источник
Раздел 7.8.4 спецификации описывает буквенное обозначение строки. Единственное отличие состоит в том, что DoubleStringCharacter - это «SourceCharacter, но не двойные кавычки», а SingleStringCharacter - это «SourceCharacter, но не одинарные кавычки». Таким образом, единственная разница может быть продемонстрирована таким образом:
Так что это зависит от того, сколько вы хотите сделать, избегая цитаты. Очевидно, то же самое относится к двойным кавычкам в двойных кавычках.
источник
"{\"name\": \"Peter\"}"
против'{"name": "Peter"}'
? По общему признанию, вы могли бы сказать, что это та же разница, но это, безусловно, повлияет на ваше решение не так, как в примере выше.Одинарные кавычки
Я хотел бы, чтобы двойные кавычки были стандартом, потому что они имеют немного больше смысла , но я продолжаю использовать одинарные кавычки, потому что они доминируют на сцене.
Одинарные кавычки:
Нет предпочтений:
Двойные кавычки:
.eslintrc
)источник
Я хотел бы сказать, что разница чисто стилистическая, но у меня действительно есть сомнения. Рассмотрим следующий пример:
В Safari, Chrome, Opera и Internet Explorer (протестировано в IE7 и IE8) это вернет следующее:
Однако Firefox даст немного другой результат:
Одиночные кавычки были заменены на двойные. (Также обратите внимание, как пространство отступа было заменено четырьмя пробелами.) Создается впечатление, что по крайней мере один браузер внутренне анализирует JavaScript, как будто все написано с использованием двойных кавычек.Можно подумать, что Firefox занимает меньше времени для разбора JavaScript, если все уже написано в соответствии с этим «стандартом».
Что, кстати, делает меня очень грустной пандой, так как я думаю, что одиночные кавычки выглядят намного лучше в коде. Кроме того, в других языках программирования они обычно используются быстрее, чем двойные кавычки, поэтому это будет иметь смысл только в том случае, если это применимо к JavaScript.
Вывод: я думаю, что нам нужно больше исследовать это.
Изменить: Это может объяснить результаты теста Петра-Пола Коха еще в 2003 году.
Редактировать 2014: современные версии Firefox / Spidermonkey больше не делают этого.
источник
.toString
но теперь возвращает оригинальную копию. Современный Firefox не будет иметь этой проблемы.Если вы используете встроенный JavaScript (возможно, «плохая» вещь, но избегаете этого обсуждения) , то, как мне кажется, единственные кавычки - ваш единственный вариант для строковых литералов.
например, это работает нормально:
Но вы не можете заключить "привет" в двойные кавычки, используя любой метод экранирования, который я знаю. Даже то,
"
что было бы моим лучшим предположением (поскольку вы избегаете кавычек в значении атрибута HTML), не работает для меня в Firefox.\"
тоже не сработает, потому что на этом этапе вы используете HTML, а не JavaScript.Итак, если название игры - последовательность, и вы собираетесь использовать встроенный JavaScript в некоторых частях вашего приложения, я думаю, что одинарные кавычки - победитель. Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь.
источник
<a onclick="alert(%22hi%22);">hi</a>
- из памяти это работает, хотя вместо этого это могло быть в атрибуте href<a href="javascript:alert(%22hi%22);">hi</a>
alert("hi")
, не является правильным JavaScript. Но значения атрибутов закодированы. w3.org/TR/html4/intro/sgmltut.html#didx-attribute"
это правильный способ избежать двойной кавычки внутри атрибута HTML. Он отлично работает в Firefox. @Denilson, XML (и, следовательно, XHTML) допускает как одинарные, так и двойные кавычки. См.AttValue
Литерал в спецификации XML на w3.org/TR/REC-xml/#d0e888 .Технически нет никакой разницы, это только вопрос стиля и соглашения.
Дуглас Крокфорд рекомендует использовать одинарные кавычки для внутренних строк и двойные кавычки для внешних (под внешними мы подразумеваем те, которые должны отображаться пользователю приложения, такие как сообщения или оповещения).
Я лично следую за этим.
ОБНОВЛЕНИЕ: кажется, что мистер Крокфорд передумал и теперь рекомендует использовать двойные кавычки :)
источник
Строго говоря, нет никакой разницы в значении; так что выбор сводится к удобству.
Вот несколько факторов, которые могут повлиять на ваш выбор:
источник
'
находится00100111
в двоичной системе , в то время как"
это00100010
в двоичной системе . Таким образом, двойные кавычки требуют вдвое меньше энергии для хранения, чем одинарные. Это разница прямо там.Давайте посмотрим, что делает ссылка.
Внутри jquery.js каждая строка заключена в двойные кавычки.
Итак, теперь я буду использовать строки в двойных кавычках. (Я использовал сингл!)
источник
Просто сохраняйте последовательность в том, что вы используете. Но не подводите свой уровень комфорта.
ES6 обновление
Использование буквального синтаксиса шаблона .
источник
Это в основном вопрос стиля и предпочтений. В других ответах есть несколько довольно интересных и полезных технических исследований, так что, пожалуй, единственное, что я могу добавить, это дать немного мирских советов.
Если вы программируете в компании или команде, то , вероятно, стоит следовать «домашнему стилю».
Если вы в одиночку хакерство несколько побочных проектов, а затем посмотреть на несколько видных лидеров в обществе. Например, допустим, вы попали в Node.js. Взгляните на основные модули, например underscore.js или express, и посмотрите, какое соглашение они используют, и подумайте о том, чтобы им следовать.
Если оба соглашения используются в равной степени, тогда придерживайтесь ваших личных
предпочтений.
Если у вас нет личных предпочтений, то монетка.
Если у вас нет монеты, то пиво на мне;)
источник
Я надеюсь, что не добавляю что-то очевидное, но я боролся с Django и Ajax и JSON на этом.
Предполагая, что в вашем HTML-коде вы используете двойные кавычки, как обычно должно быть, я настоятельно рекомендую использовать одинарные кавычки для остальных в JavaScript.
Так что я согласен с @ady, но с некоторой осторожностью.
Суть в том, что в JavaScript, вероятно, это не имеет значения, но как только вы внедрите его в HTML или что-то подобное, у вас начнутся проблемы. Вы должны знать, что на самом деле ускользает, читает, передает вашу строку.
Мой простой случай был:
Вы можете найти \ 'в третьем поле шоу.
Двойная кавычка не сработала!
Понятно почему, но также понятно, почему мы должны придерживаться одинарных кавычек ... .. Я думаю ...
Этот случай представляет собой очень простое встраивание HTML, ошибка была сгенерирована простым копированием / вставкой из кода JavaScript с двойными кавычками.
Итак, чтобы ответить на вопрос:
Попробуйте использовать одинарные кавычки в HTML. Это может спасти пару проблем отладки ...
источник
Не уверен, что это актуально в современном мире, но двойные кавычки использовались для контента, который должен обрабатываться управляющими символами, и одинарные кавычки для строк, которые этого не делали.
Компилятор будет запускать манипуляции со строками в строке в двойных кавычках, оставляя строку в одинарных кавычках буквально нетронутой. Раньше это приводило к тому, что «хорошие» разработчики выбирали использование одинарных кавычек для строк, которые не содержали управляющих символов, таких как
\n
или\0
(не обработанных в одинарных кавычках), и двойных кавычек, когда им требовалось проанализировать строку (за небольшую плату в циклах процессора для обработка строки).источник
Если вы используете jshint , это вызовет ошибку, если вы используете двойные кавычки.
Я использовал его через Yeoman леса AngularJS, но, возможно, есть какой-то способ настроить это.
Кстати, когда вы обрабатываете HTML в JavaScript, проще использовать одинарные кавычки:
И, по крайней мере, JSON использует двойные кавычки для представления строк.
Там нет тривиального способа ответить на ваш вопрос
источник
Говоря о производительности, кавычки никогда не станут вашим узким местом, однако производительность в обоих случаях одинакова.
Говоря о скорости кодирования, если вы используете
'
для разделения строки, вам нужно будет избегать"
кавычек. Вам, скорее всего, придется использовать"
внутри строки, например:Затем я предпочитаю использовать
'
для разделения строки, поэтому мне нужно экранировать меньше символов.источник
Одна (глупая) причина использовать одинарные кавычки состоит в том, что они не требуют от вас нажатия клавиши Shift для их ввода, тогда как двойные кавычки делают. (Я предполагаю, что средняя строка не требует экранирования, что является разумным предположением.) Теперь давайте предположим, что каждый день я кодирую 200 строк кода. Может быть, в этих 200 строках у меня 30 цитат. Возможно, ввод двойной кавычки занимает на 0,1 секунды больше времени, чем ввод одинарной кавычки (потому что я должен нажать клавишу Shift). Затем в любой день я трачу 3 секунды. Если я буду кодировать таким образом 200 дней в году в течение 40 лет, то я потрачу впустую 6,7 часа своей жизни. Пища для размышлений.
источник
var description = "This is a \"quick\" test";
on английская клавиатура. Для английской клавиатуры ваш мизинец должен двигаться от левой клавиши Shift к клавише Q в верхнем ряду, а не от клавиши A к клавише Q. Другими словами, он должен проходить вдвое больше расстояния Я не уверен, где находятся клавиши на немецкой клавиатуре, но я уверен, что есть аналогичный примерВ пользу одинарных кавычек
Кроме того, встроенный HTML обычно является анти-шаблоном. Предпочитаю шаблоны.
Опять же, вам не нужно создавать JSON таким образом. JSON.stringify () достаточно часто. Если нет, используйте шаблоны.
В пользу двойных кавычек
В пользу обоих
Нет никакой разницы между этими двумя в JavaScript. Поэтому вы можете использовать все, что удобно в данный момент. Например, следующие строковые литералы производят одну и ту же строку:
Одинарные кавычки для внутренних строк и двойные для внешних. Это позволяет отличать внутренние константы от строк, которые должны отображаться пользователю (или записываться на диск и т. Д.). Очевидно, вам следует избегать добавления последних в ваш код, но это не всегда можно сделать.
источник
Еще одна вещь, которую вы могли бы рассмотреть в качестве причины перехода от двойных к одиночным кавычкам, - это рост популярности серверных сценариев. При использовании PHP вы можете передавать переменные и анализировать функции JavaScript, используя строки и переменные в PHP.
Если вы пишете строку и используете двойные кавычки для своего PHP, вам не нужно будет избегать ни одной из одинарных кавычек, и PHP автоматически получит значение переменных для вас.
Пример: мне нужно запустить функцию javascript, используя переменную с моего сервера.
Это избавляет меня от хлопот, связанных с объединением строк, и я могу эффективно вызывать JavaScript из PHP. Это только один пример, но это может быть одной из нескольких причин, почему программисты по умолчанию используют одинарные кавычки в javascript.
Цитата из документов PHP : «Самая важная особенность строк в двойных кавычках заключается в том, что имена переменных будут расширены. Подробности смотрите в разборе строк».
источник
Есть люди, которые утверждают, что видят различия в производительности: старая ветка списка рассылки . Но я не смог найти ни одного из них, чтобы подтвердить.
Главное - посмотреть, какие кавычки (двойные или одинарные) вы используете внутри своей строки. Это помогает сохранить количество побегов на низком уровне. Например, когда вы работаете с html внутри ваших строк, проще использовать одинарные кавычки, чтобы вам не пришлось экранировать все двойные кавычки вокруг атрибутов.
источник
Я бы использовал двойные кавычки, когда нельзя использовать одинарные кавычки, и наоборот:
Вместо:
источник
В JavaScript нет разницы между одинарными и двойными кавычками.
Спецификация важна:
Возможно, существуют различия в производительности, но они абсолютно минимальны и могут меняться каждый день в зависимости от реализации браузера. Дальнейшее обсуждение бесполезно, если ваше JavaScript-приложение не имеет сотни тысяч.
Это как ориентир, если
быстрее чем
(лишние пробелы)
сегодня в конкретном браузере и платформе и т. д.
источник
При использовании CoffeeScript я использую двойные кавычки. Я согласен, что вы должны выбрать любой из них и придерживаться его. CoffeeScript дает вам интерполяцию при использовании двойных кавычек.
ES6 использует обратные галочки (`) для строк шаблона. Что, вероятно, имеет вескую причину, но при кодировании может быть затруднительно изменить символ строковых литералов с кавычек или двойных кавычек на обратные тики, чтобы получить возможность интерполяции. CoffeeScript может быть не идеальным, но использование везде одинаковых символов строковых литералов (двойные кавычки) и всегда возможность интерполировать - хорошая функция.
источник
Если вы перепрыгиваете вперед между JavaScript и C #, лучше потренировать пальцы для общего соглашения, заключающегося в двойных кавычках.
источник
Я выполнял следующие около 20 раз. И похоже, что двойные кавычки примерно на 20% быстрее.
Самое интересное, что если вы измените часть 2 и часть 1, одинарные кавычки будут примерно на 20% быстрее.
источник
var dummy_date = new Date()
в началоСтрого нет никакой разницы, так что это в основном вопрос вкуса и того, что находится в строке (или, если сам код JS находится в строке), чтобы сохранить число выходов низким.
Легенда о разнице в скорости может происходить из мира PHP, где две кавычки ведут себя по-разному.
источник
Прочитав все ответы, в которых говорится, что это может быть быстрее или может иметь преимущества, я бы сказал, что двойные кавычки лучше, а может быть, и быстрее, потому что компилятор закрытия Google преобразует одинарные кавычки в двойные.
источник
Теперь, когда наступил 2020 год, мы должны рассмотреть третий вариант для Javascript: единый обратный удар для всего.
Это может использоваться везде вместо одинарных или двойных кавычек.
Это позволяет вам делать все!
Это позволяет несколько строк: `
Эта
делает
Javascript
Лучше!
`
Это также не приводит к снижению производительности при замене двух других: https://medium.com/javascript-in-plain-english/are-backticks-slower-than-other-strings-in-javascript-ce4abf9b9fa
источник
Если ваш источник JS:
Источник HTML будет:
или для HTML5
JS позволяет такие массивы:
Но если вы приведете его в соответствие, это будет по совместимой причине:
Я уверен, что это займет некоторое время.
источник
Просто добавьте мои 2 цента: Работая с JS и PHP несколько лет назад, я привык использовать одинарные кавычки, поэтому я могу набирать escape-символ ('\'), не прибегая к его экранированию. Я обычно использовал его при наборе необработанных строк с путями к файлам и т. Д. ( Http://en.wikipedia.org/wiki/String_literal#Raw_strings )
Как бы то ни было, мое соглашение в конечном итоге стало использование одинарных кавычек в необработанных строках идентификатора, таких как
if (typeof s == 'string') ...
(в которых escape-символы никогда не будут использоваться - никогда), и двойных кавычек для текстов , таких как «Эй, что случилось?». Я также использую одинарные кавычки в комментариях как типографское соглашение, чтобы показать имена идентификаторов. Это всего лишь практическое правило, и я прекращаю работу только тогда, когда это необходимо, например, при вводе строк HTML'<a href="#"> like so <a>'
(хотя здесь вы также можете изменить кавычки). Мне также известно, что в случае JSON для имен используются двойные кавычки, но, помимо этого, лично я предпочитаю одинарные кавычки, когда экранирование никогда не требуется для текста между кавычками - какdocument.createElement('div')
.В итоге, и, как некоторые упоминали / ссылались на него, выберите соглашение, придерживайтесь его и отклоняйте его только при необходимости.
источник