Когда использовать двойные или одинарные кавычки в JavaScript?

Это должно сделать это:

^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)

Вы можете добавить столько игнорируемых слов, сколько хотите, вот простая реализация PHP:

$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');

preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);
1857
задан 9 revs, 6 users 44% 9 February 2016 в 06:59
поделиться

22 ответа

Наиболее вероятной причиной использования сингла по сравнению с дважды в различных библиотеках является предпочтение программиста и/или непротиворечивость API.

Кроме того, чтобы быть последовательным, используйте какой бы ни лучшие иски string:.

Используя другой тип кавычки как литерал:

alert('Say "Hello"');
alert("Say 'Hello'");

†¦, но это может получить complicated†¦

alert("It's \"game\" time.");
alert('It\'s "game" time.');

, Другая опция, новая в ES6, Шаблонные литералы , которые используют back-tick символ:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`Escape the \` back-tick character and the \${ dollar-brace sequence in a string`);

Шаблонные литералы предлагают чистый синтаксис для: интерполяция переменной, многострочные строки, и т.д.

1155
ответ дан 7 revs, 7 users 41% 9 February 2016 в 06:59
поделиться

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

Я предпочитаю ' просто потому, что вам не нужно это делать !

Кроме этого вы можете избежать ' внутри одинарных кавычек с обратной косой чертой \'

console.log('Don\'t lose time'); // "Don't lose time"

1
ответ дан ovidb 9 February 2016 в 06:59
поделиться

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

Главное - посмотреть, какие кавычки (двойные или одинарные) вы используете внутри своей строки. Это помогает сохранить количество побегов на низком уровне. Например, когда вы работаете с html внутри ваших строк, проще использовать одинарные кавычки, чтобы вам не пришлось экранировать все двойные кавычки вокруг атрибутов.

5
ответ дан Michiel Overeem 9 February 2016 в 06:59
поделиться

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

600
ответ дан Arne 9 February 2016 в 06:59
поделиться

Я бы использовал двойные кавычки, когда нельзя использовать одинарные кавычки, и наоборот:

"'" + singleQuotedValue + "'"
'"' + doubleQuotedValue + '"'

Вместо:

'\'' + singleQuotedValue + '\''
"\"" + doubleQuotedValue + "\""
6
ответ дан Gumbo 9 February 2016 в 06:59
поделиться

Лично я предпочитаю одинарные кавычки для удобства чтения. Если я весь день смотрю на код, то легче увидеть слова только в одинарных кавычках, а не в двойных.

Легче читать, как показано здесь:

«легко читать»

«труднее читать»

«« труднее читать »»

0
ответ дан Antoine 9 February 2016 в 06:59
поделиться

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

Компилятор будет запускать строковые манипуляции со строкой в ​​двойных кавычках, оставляя строку в одинарных кавычках буквально нетронутой. Раньше это приводило к тому, что «хорошие» разработчики предпочитали использовать одинарные кавычки для строк, которые не содержали управляющих символов, таких как \n или \0 (не обрабатываются в одинарных кавычках), и двойные кавычки, когда им нужно было проанализировать строку (при небольшая стоимость в процессорных циклах для обработки строки).

12
ответ дан garysb 9 February 2016 в 06:59
поделиться

Для использования кода JavaScript на разных языках я обнаружил, что одинарные кавычки постоянно требуют меньше подстройки кода.

Двойные кавычки поддерживают многострочные строки.

-2
ответ дан 2 revs, 2 users 67% 9 February 2016 в 06:59
поделиться

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

Если говорить о скорости кодирования, если вы используете ' для разграничения строки, вам нужно будет избегать " кавычек. Вам, скорее всего, понадобится использовать " внутри строки, например:

//JSON Objects:
var jsonObject = '{"foo":"bar"}';
//HTML attributes:
document.getElementById("foobar").innerHTML = '<input type="text">';

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

10
ответ дан Juan C. Roldán 9 February 2016 в 06:59
поделиться

В JavaScript нет разницы между одинарными и двойными кавычками.

Спецификация важна:

Возможно, существуют различия в производительности, но они абсолютно минимальны и могут меняться каждый день в соответствии с реализацией браузера. Дальнейшее обсуждение бесполезно, если ваше JavaScript-приложение не имеет длины в сотни тысяч.

Это похоже на тест, если

a=b;

быстрее, чем

a = b;

(дополнительные пробелы)

сегодня, в конкретном браузере и платформе и т. Д.

6
ответ дан 2 revs, 2 users 83%mauro 9 February 2016 в 06:59
поделиться

Я думаю, что это все вопрос удобства / предпочтения.

Я предпочитаю двойные кавычки, потому что они совпадают с тем, что есть в C #, и с моей средой, над которой я обычно работаю: C # + JS.

Также одной из возможных причин двойных кавычек по сравнению с одинарными кавычками является то (что я обнаружил в коде моих проектов): французский или некоторые другие языки часто используют одинарные кавычки (например, английский), поэтому, если по какой-то причине вы в конечном итоге рендеринг строк со стороны сервера (что я знаю, это плохая практика), тогда одиночная кавычка будет отображаться неправильно.

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

0
ответ дан Kat Lim Ruiz 9 February 2016 в 06:59
поделиться

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

Дуглас Крокфорд рекомендует использовать одинарные кавычки для внутренних строк и двойные кавычки для внешних (под внешними мы подразумеваем те, которые должны отображаться пользователю приложения, такие как сообщения или оповещения).

Я лично следую за этим.

ОБНОВЛЕНИЕ: Похоже, что мистер Крокфорд передумал и теперь рекомендует использовать двойные кавычки:)

29
ответ дан 4 revs, 2 users 82% 9 February 2016 в 06:59
поделиться

Я надеюсь, что не добавляю что-то очевидное, но я боролся с Джанго и Аяксом и JSON по этому поводу.

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

Так что я согласен с @ady, но с некоторой осторожностью.

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

Мой простой случай был:

tbox.innerHTML = tbox.innerHTML + '<div class="thisbox_des" style="width:210px;" onmouseout="clear()"><a href="/this/thislist/'
                   + myThis[i].pk +'"><img src="/site_media/'
                   + myThis[i].fields.thumbnail +'" height="80" width="80" style="float:left;" onmouseover="showThis('
                   + myThis[i].fields.left +','
                   + myThis[i].fields.right +',\''
                   + myThis[i].fields.title +'\')"></a><p style="float:left;width:130px;height:80px;"><b>'
                   + myThis[i].fields.title +'</b> '
                   + myThis[i].fields.description +'</p></div>'

Вы можете заметить \ 'в третьем поле шоу Это.

Двойная кавычка не сработала!

Понятно почему, но также ясно, почему мы должны придерживаться одинарных кавычек ... .. Я думаю ...

Этот случай представляет собой очень простое встраивание HTML, ошибка была сгенерирована простым копированием / вставкой из кода JavaScript с «двойными кавычками».

Итак, чтобы ответить на вопрос:

Попробуйте использовать одинарные кавычки в HTML. Это может спасти пару проблем отладки ...

13
ответ дан 3 revs, 2 users 88% 9 February 2016 в 06:59
поделиться

Изучение плюсов и минусов

В пользу одинарных кавычек

  • Менее визуальный беспорядок.
  • Генерация HTML: атрибуты HTML обычно разделяются двойными кавычками.

elem.innerHTML = '<a href="' + url + '">Hello</a>';
Однако одинарные кавычки так же допустимы в HTML.

elem.innerHTML = "<a href='" + url + "'>Hello</a>";

Кроме того, встроенный HTML обычно является анти-паттерном. Предпочитаю шаблоны.

  • Генерация JSON: в JSON допускаются только двойные кавычки.

myJson = '{ "hello world": true }';

Опять же, вам не нужно создавать JSON таким образом. JSON.stringify () достаточно часто. Если нет, используйте шаблоны.

В пользу двойных кавычек

  • Двойные буквы легче обнаружить, если у вас нет цветовой кодировки. Как в журнале консоли или в какой-то настройке вида источника.
  • Сходство с другими языками: в программировании оболочки (Bash и т. Д.) Строковые литералы в одинарных кавычках существуют, но экранирование не интерпретируется внутри них. C и Java используют двойные кавычки для строк и одинарные кавычки для символов.
  • Если вы хотите, чтобы код был действительным JSON, вам нужно использовать двойные кавычки.

В пользу обоих

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

    "He said: \"Let's go!\""
    'He said: "Let\'s go!"'
    "He said: \"Let\'s go!\""
    'He said: \"Let\'s go!\"'

Одинарные кавычки для внутренних строк и двойные для внешних. Это позволяет отличать внутренние константы от строк, которые должны отображаться пользователю (или записываться на диск и т. Д.). Очевидно, вам следует избегать добавления последних в ваш код, но это не всегда можно сделать.

9
ответ дан Divyesh Kanzariya 9 February 2016 в 06:59
поделиться

Я бы хотел сказать, что разница чисто стилистическая, но у меня действительно есть сомнения. Рассмотрим следующий пример:

/*
   Add trim() functionality to JavaScript...
    1. By extending the String prototype
    2. By creating a 'stand-alone' function
   This is just to demonstrate results are the same in both cases.
*/

// Extend the String prototype with a trim() method
String.prototype.trim = function() {
 return this.replace(/^\s+|\s+$/g, '');
};

// 'Stand-alone' trim() function
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
};

document.writeln(String.prototype.trim);
document.writeln(trim);

В Safari, Chrome, Opera и Internet Explorer (протестировано в IE7 и IE8) это вернет следующее:

function () {
 return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
}

Однако Firefox даст немного другой результат:

function () {
    return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
    return str.replace(/^\s+|\s+$/g, "");
}

Одиночные кавычки были заменены двойными кавычками. (Также обратите внимание, как пространство отступа было заменено четырьмя пробелами.) Создается впечатление, что по крайней мере один браузер внутренне анализирует JavaScript, как если бы все было написано с использованием двойных кавычек. Можно подумать, что Firefox занимает меньше времени для разбора JavaScript, если все уже написано в соответствии с этим «стандартом».

Что, кстати, делает меня очень грустной пандой, так как я думаю, что одиночные кавычки выглядят намного лучше в коде. Кроме того, в других языках программирования они обычно используются быстрее, чем двойные кавычки, так что это имеет смысл, только если это применимо к JavaScript.

Заключение: Я думаю, что нам нужно больше исследовать это.

Редактировать: Это может объяснить результаты теста Петра-Павла Коха в далеком 2003 году.

Кажется, что одинарные кавычки иногда быстрее в Windows Explorer (примерно 1/3 моих тестов показывали более быстрое время отклика), но если Mozilla вообще показывает разницу, он обрабатывает двойные кавычки немного быстрее. Я не нашел никакой разницы в Опере.

Редактировать 2014: Современные версии Firefox / Spidermonkey больше этого не делают.

56
ответ дан 5 revs 9 February 2016 в 06:59
поделиться

Только разница только демонстрируется в следующем:

'A string that\'s single quoted'

"A string that's double quoted"

Таким образом, это зависит только от того, сколько вы хотите сделать, избегая цитаты. Очевидно, то же самое относится к двойным кавычкам в двойных кавычках.

116
ответ дан 2 revs, 2 users 92% 9 February 2016 в 06:59
поделиться

Нет строго никакого различия, таким образом, это - главным образом вопрос вкуса и того, что находится в строке (или если сам код JS находится в строке), для поддержания количества на низком уровне Escape.

легенда разности оборотов могла бы прибыть из мира PHP, где две кавычки имеют различное поведение.

3
ответ дан PhiLho 9 February 2016 в 06:59
поделиться

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

2
ответ дан Andrew Hedges 9 February 2016 в 06:59
поделиться

Строго говоря нет никакого различия в значении; таким образом, выбор сводится к удобству.

Вот несколько факторов, которые могли влиять на Ваш выбор:

  • стиль Дома: Некоторые группы разработчиков уже используют одно соглашение или другой.
  • Клиентские требования: Вы будете использовать кавычки в строках? (См. ответ Ady).
  • язык Серверной стороны: люди VB.Net могли бы принять решение использовать одинарные кавычки для JavaScript так, чтобы сценарии могли быть созданной серверной стороной (VB.Net использует двойные кавычки для строк, таким образом, строки JavaScript легки к выдающемуся, если они используют одинарные кавычки).
  • код Библиотеки: Если Вы пользуетесь библиотекой, которая использует конкретный стиль, Вы могли бы рассмотреть использование того же стиля сами.
  • Персональное предпочтение: Вы могли бы думать один, или другой стиль выглядит лучше.
26
ответ дан 2 revs, 2 users 95% 9 February 2016 в 06:59
поделиться

Если вы используете встроенный JavaScript (возможно, «плохой» вариант, но избегайте этого обсуждения) одинарные кавычки, я считаю, ваш единственный вариант для строковых литералов.

например, это работает нормально:

<a onclick="alert('hi');">hi</a>

Но вы не можете заключить «привет» в двойные кавычки с помощью любого известного мне метода экранирования. Даже & quot; , что было бы моим лучшим предположением (поскольку вы избегаете кавычек в значении атрибута HTML), у меня не работает в Firefox. \ " тоже не сработает, потому что на этом этапе вы используете экранирование для HTML, а не для JavaScript.

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

31
ответ дан 22 November 2019 в 20:02
поделиться

Я выполнял следующее около 20 раз. И оказалось, что двойные кавычки примерно на 20% быстрее.

Самое интересное, что если поменять местами часть 2 и часть 1, то одинарные кавычки работают примерно на 20% быстрее.

//Part1
var r='';
var iTime3 = new Date().valueOf();
for(var j=0; j<1000000; j++) {
    r+='a';
}
var iTime4 = new Date().valueOf();
alert('With single quote : ' + (iTime4 - iTime3));  

//Part 2                
var s="";
var iTime1 = new Date().valueOf();
for(var i=0; i<1000000; i++) {
    s += "a";
}
var iTime2 = new Date().valueOf();
alert('With double quote: ' + (iTime2 - iTime1));
5
ответ дан 22 November 2019 в 20:02
поделиться

Я думаю, важно не забывать, что, хотя в IE может быть установлено 0 расширений / панелей инструментов, в Firefox могут быть установлены некоторые расширения (я просто думаю о firebug, например). Эти расширения будут влиять на результат теста.

Не то, чтобы это действительно имело значение, поскольку браузер X быстрее получает элементы стиля, а браузер Y может быстрее отображать элемент canvas. (следовательно, почему «производитель» браузера всегда имеет самый быстрый движок JavaScript)

1
ответ дан 22 November 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: