Когда использовать двойные или одинарные кавычки в JavaScript? - PullRequest
1834 голосов
/ 28 октября 2008

console.log("double"); против console.log('single');

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

Ответы [ 41 ]

6 голосов
/ 24 июля 2009

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

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

Вместо:

'\'' + singleQuotedValue + '\''
"\"" + doubleQuotedValue + "\""
6 голосов
/ 26 июля 2009

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

Важна спецификация:

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

Это как эталон, если

a=b;

быстрее

a = b;

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

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

5 голосов
/ 21 июля 2013

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

5 голосов
/ 29 апреля 2010

Я выполнял следующее около 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 голосов
/ 28 октября 2008

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

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

4 голосов
/ 18 сентября 2011

После прочтения всех ответов, в которых говорится, что это может быть быстрее или, возможно, иметь преимущества, я бы сказал, что двойные кавычки лучше или, возможно, тоже быстрее, потому что Компилятор Google closure преобразовывает одинарные кавычки в двойные.

3 голосов
/ 12 июня 2014

Просто добавлю мои 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').

Итог, и, как некоторые упоминали / ссылались на него, выберите соглашение, придерживайтесь его и отклоняйтесь только при необходимости.

3 голосов
/ 05 июня 2014

Если ваш источник JS:

elem.innerHTML="<img src='smily' alt='It\'s a Smily' style='width:50px'>";

Источник HTML будет:

<img src="smiley" alt="It's a Smiley" style="width:50px">

или для HTML5

<img src=smiley alt="It's a Smiley" style=width:50px>

JS допускает такие массивы:

var arr=['this','that'];

Но если вы приведете его в соответствие, то по совместимой причине:

JSON=["this","that"]

Я уверен, что это займет некоторое время.

3 голосов
/ 28 октября 2008

Строго нет никакой разницы, поэтому в основном это зависит от вкуса и от того, что находится в строке (или если сам код JS находится в строке), чтобы сохранить число экранирований на низком уровне.

Легенда о разнице в скорости может происходить из мира PHP, в котором две кавычки ведут себя по-разному.

3 голосов
/ 10 сентября 2014

Вы можете использовать одинарные или двойные кавычки. Это позволяет вам, например, легко вкладывать javascript в атрибуты HTML без необходимости экранировать кавычки То же самое, когда вы создаете JavaScript с PHP.

Общая идея такова: если это возможно, используйте такие кавычки, что вам не нужно будет бежать Меньше экранирования = лучший код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...