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


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

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


1666


источник


Ответы:


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

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

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

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

... но это может усложниться ...

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

Еще один вариант, новый в ES6, Литералы шаблонов которые используют back-tickперсонаж:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`The escape the \` back-tick character in a string`);

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


1031



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


561



Нет лучшего решения ; однако я хотел бы утверждать, что двойные кавычки могут быть более желательными время от времени:

  • Новички уже знакомы с двойными кавычками с их языка , На английском языке мы должны использовать двойные кавычки "для определения прохода цитируемого текста. Если бы мы использовали одну цитату ', читатель может неправильно интерпретировать его как сокращение. Другой смысл прохода текста, окруженного 'указывает на «разговорное» значение. Имеет смысл придерживаться уже существующих языков, и это, вероятно, облегчит изучение и интерпретацию кода.
  • Двойные кавычки устраняют необходимость избегать апострофов (как в схватках). Рассмотрим строку: "I'm going to the mall", по сравнению с иначе экранированной версией: 'I\'m going to the mall',
  • Двойные кавычки означают строку на многих других языках , Когда вы изучаете новый язык, такой как Java или C, всегда используются двойные кавычки. В Ruby, PHP и Perl строки с одним кавычком подразумевают отсутствие обратных слэшей, а двойные кавычки поддерживают их.

  • Обозначение JSON записывается с двойными кавычками.

Тем не менее, как утверждали другие, наиболее важно оставаться последовательным.


239



The only difference is demonstrated in the following:

'A string that\'s single quoted'

"A string that's double quoted"

So, it's only down to how much quote escaping you want to do. Obviously the same applies to double quotes in double quoted strings.


110



Single Quotes

I wish double quotes were the standard, because they make a little bit more sense, but I keep using single quotes because they dominate the scene.

Single quotes:

No preference:

Double quotes:


66



I'd like to say the difference is purely stylistic, but I'm really having my doubts. Consider the following example:

/*
   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);

In Safari, Chrome, Opera, and Internet Explorer (tested in IE7 and IE8), this will return the following:

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

However, Firefox will yield a slightly different result:

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

The single quotes have been replaced by double quotes. (Also note how the indenting space was replaced by four spaces.) This gives the impression that at least one browser parses JavaScript internally as if everything was written using double quotes. One might think, it takes Firefox less time to parse JavaScript if everything is already written according to this 'standard'.

Which, by the way, makes me a very sad panda, since I think single quotes look much nicer in code. Plus, in other programming languages, they're usually faster to use than double quotes, so it would only make sense if the same applied to JavaScript.

Conclusion: I think we need to do more research on this.

Edit: This might explain Peter-Paul Koch's test results from back in 2003.

It seems that single quotes are sometimes faster in Explorer Windows (roughly 1/3 of my tests did show a faster response time), but if Mozilla shows a difference at all, it handles double quotes slightly faster. I found no difference at all in Opera.

Edit 2014: Modern versions of Firefox/Spidermonkey don’t do this anymore.


54



If you're doing inline JavaScript (arguably a "bad" thing, but avoiding that discussion) single quotes are your only option for string literals, I believe.

e.g., this works fine:

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

But you can't wrap the "hi" in double quotes, via any escaping method I'm aware of. Even &quot; which would have been my best guess (since you're escaping quotes in an attribute value of HTML) doesn't work for me in Firefox. \" won't work either because at this point you're escaping for HTML, not JavaScript.

So, if the name of the game is consistency, and you're going to do some inline JavaScript in parts of your app, I think single quotes are the winner. Someone please correct me if I'm wrong though.


30



Technically there's no difference, it's only matter of style and convention.

Douglas Crockford recommends using single quotes for internal strings and double quotes for external (by external we mean those to be displayed to user of application, like messages or alerts).

I personally follow that.

UPDATE: It appears that Mr. Crockford changed his mind and now recommends using double quotes throughout :)


29



Strictly speaking, there is no difference in meaning; so the choice comes down to convenience.

Here are several factors that could influence your choise:

  • House style: Some groups of developers already use one convention or the other.
  • Client-side requirements: Will you be using quotes within the strings? (See Ady's answer).
  • Server-side language: VB.Net people might choose to use single quotes for java-script so that the scripts can be built server-side (VB.Net uses double-quotes for strings, so the java-script strings are easy to distinguished if they use single quotes).
  • Library code: If you're using a library that uses a particular style, you might consider using the same style yourself.
  • Personal preference: You might thing one or other style looks better.

23



Let's look what a reference do.

Inside jquery.js, every string are double-quoted.

So, beginning now, I'll use double-quoted strings. (I was using single!)


18