Kiedy używać podwójnych lub pojedynczych cudzysłowów w JavaScript?

console.log("double"); vs console.log('single');

Widzę coraz więcej bibliotek JavaScript, które używają pojedynczych cudzysłowów podczas obsługi łańcuchów. Jakie są powody, aby używać jednego nad drugim? Myślałem, że są wymienne.

Author: aemkei, 2008-10-28

30 answers

Najbardziej prawdopodobnym powodem użycia pojedynczego vs podwójnego w różnych bibliotekach jest preferencja programisty i / lub spójność API.

Poza byciem spójnym, użyj tego, co najlepiej pasuje do ciągu:.

Użycie innego typu cytatu jako dosłownego:

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

...ale to może się skomplikować ...

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

Inną opcją, nową w ES6, są literały szablonów, które używają znaku back-tick:

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

Literały szablonów oferują czystą składnię dla: zmiennej interpolacja, ciągi Wielowierszowe i wiele innych.

 1060
Author: Beau Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-06 12:11:02

Jeśli masz do czynienia z JSON, należy zauważyć, że ściśle mówiąc, ciągi JSON muszą być podwójnie cytowane. Oczywiście, wiele bibliotek obsługuje również pojedyncze cytaty, ale miałem duże problemy w jednym z moich projektów, zanim zdałem sobie sprawę, że pojedyncze cytowanie ciągu znaków nie jest w rzeczywistości zgodne ze standardami JSON.

 572
Author: Arne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-06 07:59:46

Nie ma lepszego rozwiązania ; jednak chciałbym argumentować, że podwójne cudzysłowy mogą być czasami bardziej pożądane:

  • Nowi użytkownicy będą już zaznajomieni z podwójnymi cudzysłowami ze swojego języka . W języku angielskim musimy używać podwójnych cudzysłowów ", aby zidentyfikować fragment cytowanego tekstu. Jeśli użyjemy pojedynczego cytatu ', czytelnik może błędnie zinterpretować go jako skurcz. Inne znaczenie fragmentu tekstu otoczonego ' wskazuje na "potoczne" znaczenie. Zachowanie zgodności z istniejącymi językami ma sens, co może ułatwić naukę i interpretację kodu.
  • podwójne cudzysłowy eliminują potrzebę ucieczki apostrofów (jak w skurczach). Rozważmy ciąg znaków: "I'm going to the mall", A wersję z klauzulą ucieczki: 'I\'m going to the mall'.
  • Podwójne cudzysłowy oznaczają ciąg znaków w wielu innych językach . Kiedy uczysz się nowego języka, takiego jak Java lub C, zawsze używane są podwójne cudzysłowy. W Ruby, PHP i W Perlu, pojedyncze cytowane ciągi znaków nie zawierają znaków odwrotnego ukośnika, podczas gdy podwójne cudzysłowy je obsługują.

  • Notacja JSON jest pisana podwójnymi cudzysłowami.

Niemniej jednak, jak stwierdzili inni, najważniejsze jest zachowanie spójności.

 256
Author: user1429980,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 12:13:22

Jedyna różnica przedstawia się następująco:

'A string that\'s single quoted'

"A string that's double quoted"
/ Align = "left" / Oczywiście to samo dotyczy podwójnych cudzysłowów w podwójnych cytowanych ciągach.
 114
Author: Gareth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-10 08:08:24

Pojedyncze Cytaty

Chciałbym, aby podwójne cytaty były standardem, ponieważ mają trochę więcej sensu , ale używam pojedynczych cytatów, ponieważ dominują w scenie.

Pojedyncze cytaty:

Brak preferencji:

Podwójne cytaty:

 71
Author: Olegs Jeremejevs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:39

Chciałbym powiedzieć, że różnica jest czysto stylistyczna, ale naprawdę mam wątpliwości. Rozważ następujący przykład:

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

W przeglądarkach Safari, Chrome, Opera i Internet Explorer (testowane w IE7 i IE8) zwróci to następujące wartości:

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

Jednak Firefox da nieco inny wynik:

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

Pojedyncze cudzysłowy zostały zastąpione podwójnymi cudzysłowami. (Zwróć również uwagę, jak przestrzeń wcięcia została zastąpiona czterema spacjami.) Sprawia to wrażenie, że w co najmniej jedna przeglądarka przetwarza JavaScript wewnętrznie tak, jakby wszystko zostało napisane przy użyciu podwójnych cudzysłowów. można by pomyśleć, że przeglądanie JavaScript zajmuje Firefoksowi mniej czasu, jeśli wszystko jest już napisane zgodnie z tym 'standardem'.

Co, nawiasem mówiąc, czyni mnie bardzo smutną pandą, ponieważ myślę, że pojedyncze cytaty wyglądają o wiele ładniej w kodzie. Dodatkowo, w innych językach programowania są one zwykle szybsze w użyciu niż podwójne cudzysłowy, więc miałoby to sens tylko wtedy, gdyby to samo miało zastosowanie do JavaScript.

Wniosek: myślę, że musimy zrobić więcej badań na ten temat.

Edit: to może wyjaśniać wyniki testu Petera-Paula kocha z 2003 roku.

Wydaje się, że pojedyncze cudzysłowy są czasami szybsze w oknach Eksploratora (mniej więcej 1/3 moich testów wykazało szybszy czas odpowiedzi), ale jeśli Mozilla w ogóle wykazuje różnicę, obsługuje podwójne cudzysłowy nieco szybciej. Nie znalazłem żadnej różnicy w Opera.

Edycja 2014: nowoczesne wersje Firefoksa / Spidermonkey już tego nie robią.

 55
Author: Mathias Bynens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-14 20:29:39

Jeśli robisz Inline JavaScript (prawdopodobnie " zła " rzecz, ale unikając tej dyskusji) pojedyncze cudzysłowy są jedyną opcją dla literałów ciągów, wierzę.

Np. to działa dobrze:

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

Ale nie możesz zawinąć "cześć" podwójnymi cudzysłowami, za pomocą żadnej znanej mi metody ucieczki. Parzyste &quot; co byłoby moim najlepszym zdaniem (ponieważ unikasz cudzysłowów w wartości atrybutu HTML) nie działa dla mnie w Firefoksie. \" nie zadziała też ponieważ w tym momencie uciekasz dla HTML, a nie JavaScript.

Więc, jeśli nazwa gry jest spójność, i masz zamiar zrobić kilka Inline JavaScript w częściach aplikacji, myślę, że pojedyncze cytaty są zwycięzcą. Niech ktoś mnie poprawi, jeśli się mylę.

 31
Author: Tom Lianza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-28 02:41:52

Technicznie nie ma różnicy, to tylko kwestia stylu i konwencji.

Douglas Crockford zaleca używanie pojedynczych cudzysłowów dla ciągów wewnętrznych i podwójnych cudzysłowów dla zewnętrznych (przez zewnętrzne rozumiemy te, które mają być wyświetlane użytkownikowi aplikacji, np. wiadomości lub Alerty).

Ja osobiście za tym podążam.

Aktualizacja: wygląda na to, że Pan Crockford zmienił zdanie i teraz zaleca używanie podwójnych cudzysłowów w całym :)

 29
Author: Mariusz Nowak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-31 13:17:43

Ściśle mówiąc, nie ma różnicy w znaczeniu; więc wybór sprowadza się do wygody.

Oto kilka czynników, które mogą wpłynąć na twój wybór:

  • Styl Domu: niektóre grupy deweloperów używają już jednej lub drugiej konwencji.
  • wymagania Po stronie klienta: czy będziesz używać cudzysłowów w łańcuchach? (Zobacz odpowiedź Ady).
  • język po stronie serwera: VB.Net ludzie mogą wybrać użycie pojedynczych cudzysłowów dla java-script, aby Skrypty mogły być budowane server-side (VB.Net używa podwójnych cudzysłowów dla ciągów, więc ciągi java-script są łatwe do odróżnienia, jeśli używają pojedynczych cudzysłowów).
  • kod biblioteki: jeśli używasz biblioteki, która używa określonego stylu, możesz rozważyć użycie tego samego stylu.
  • osobiste preferencje: możesz sprawić, że jeden lub inny styl będzie wyglądał lepiej.
 25
Author: Kramii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 15:15:07

Spójrzmy, co robi Referencja.

Wewnątrz jquery.js, każdy ciąg jest podwójnie cytowany.

Więc, zaczynając od teraz, użyję podwójnych cytowanych ciągów. (Używałem singla!)

 18
Author: Frederic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-24 15:16:11

To głównie kwestia stylu i preferencji. W innych odpowiedziach jest kilka ciekawych i przydatnych poszukiwań technicznych, więc być może jedyne, co mogę dodać, to zaoferować trochę światowych rad.

  • Jeśli kodujesz w firmie lub zespole, to prawdopodobnie dobrym pomysłem jest postępuj zgodnie z "styl domu".

  • jeśli jesteś sam hakując kilka projektów pobocznych, to spójrz na kilku wybitnych liderów w społeczności . Powiedzmy, że dostajesz się do węzła.js. Spójrz na podstawowe moduły, np. podkreślenie.js czy express i zobacz co konwencji, której używają i rozważają jej przestrzeganie.

  • Jeśli {[6] } obie konwencje są jednakowo używane, to odrocz do swojego osobistego
    preferencje.

  • Jeśli nie masz osobistych preferencji, to rzuć monetą.

  • Jeśli nie masz monety, to piwo jest na mój koszt ;)

 14
Author: cavalcade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-01 22:17:58

Mam nadzieję, że nie dodaję czegoś oczywistego, ale borykam się z Django i Ajax i JSON na ten temat.

Zakładając, że w kodzie HTML używasz podwójnych cudzysłowów, jak zwykle powinno być, sugeruję użycie pojedynczych cudzysłowów dla reszty w JavaScript.

Więc zgadzam się z @ady, ale z pewną troską.

Moja dolna linia to: W JavaScript prawdopodobnie nie ma to znaczenia, ale jak tylko osadzić to wewnątrz HTML lub tym podobne zaczynasz mieć problemy. Powinieneś wiedzieć co tak naprawdę jest ucieczką, czytaniem, przekazywaniem Sznurka.

Mój prosty przypadek to:

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>'

Możesz zauważyć \ ' w trzecim polu showThis.

Podwójny cytat nie zadziałał!

Jest jasne, dlaczego, ale jest również jasne, dlaczego powinniśmy trzymać się pojedynczych cytatów... .. Chyba tak..

W tym przypadku jest to bardzo proste osadzanie HTML, błąd został wygenerowany za pomocą prostego kopiowania/wklejania z "podwójnego cytowanego" kodu JavaScript.

Więc aby odpowiedzieć na pytanie:

Spróbuj użyć pojedynczych cudzysłowów w HTML. Może to zaoszczędzić kilka problemów z debugowaniem...

 13
Author: mario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-22 03:04:47

Nie wiem, czy jest to istotne w dzisiejszym świecie, ale podwójne cudzysłowy były używane do treści, które wymagały przetwarzania znaków sterujących, a pojedyncze cudzysłowy do ciągów, które nie były.

Kompilator uruchomi manipulację łańcuchami na podwójnym cytowanym łańcuchu, pozostawiając pojedynczy cytowany łańcuch dosłownie nietknięty. Doprowadziło to do tego, że 'dobrzy' programiści zdecydowali się używać pojedynczych cudzysłowów do ciągów znaków, które nie zawierały znaków kontrolnych, takich jak \n lub \0 (nie przetwarzane w pojedynczym cudzysłowie cudzysłowy) i podwójne cudzysłowy, gdy wymagały przetworzenia ciągu znaków (przy niewielkim koszcie w cyklach procesora do przetworzenia łańcucha).

 12
Author: garysb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-08 03:54:32

Jeśli używasz jshint , spowoduje to błąd, jeśli użyjesz podwójnego cudzysłowu.

[1]}użyłem go przez rusztowanie Yeoman z AngularJS, ale może jest jakiś maner, aby to skonfigurować.

Przy okazji, kiedy obsługujesz HTML do JavaScript, łatwiej jest użyć pojedynczego cytatu:

var foo = '<div class="cool-stuff">Cool content</div>';

I przynajmniej JSON używa podwójnych cudzysłowów do reprenowania łańcuchów.

Nie ma trywialnego sposobu na odpowiedź na twoje pytanie

 12
Author: MetallimaX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-27 15:26:24

Mówiąc o wydajności, cytaty nigdy nie będą Twoim wąskim gardłem, jednak wydajność jest taka sama w obu przypadkach.

Mówiąc o szybkości kodowania, jeśli używasz ' do rozgraniczania łańcucha znaków, będziesz musiał uciec " cudzysłowów. Bardziej prawdopodobne jest użycie " wewnątrz ciągu znaków, w przykładzie:

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

Następnie wolę używać ' do rozgraniczania łańcucha, więc muszę uciekać się do mniejszej liczby znaków.

 10
Author: Juan Carlos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-19 15:20:05

Zachowaj spójność w tym, czego używasz. Ale nie zawiedź swojego poziomu komfortu.

"This is my string."; // :-|
"I'm invincible."; // comfortable :)
'You can\'t beat me.'; // uncomfortable :(
'Oh! Yes. I can "beat" you.'; // comfortable :)
"Do you really think, you can \"beat\" me?"; // uncomfortable :(
"You're my guest. I can \"beat\" you."; // sometimes, you've to :P
'You\'re my guest too. I can "beat" you too.'; // sometimes, you've to :P

ES6 update

Używając składni szablonu .

`Be "my" guest. You're in complete freedom.`; // most comfort :D
 10
Author: abhisekp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-05 05:56:07

Jednym (głupim) powodem używania pojedynczych cudzysłowów byłoby to, że nie wymagają wciśnięcia klawisza shift, aby je wpisać, podczas gdy podwójny cudzysłów tak. (Zakładam, że średni ciąg znaków nie wymaga ucieczki, co jest rozsądnym założeniem. Załóżmy, że każdego dnia koduję 200 linijek kodu. Może w tych 200 linijkach mam 30 cytatów. Może wpisanie podwójnego cytatu zajmuje 0,1 sekundy więcej czasu niż wpisanie pojedynczego cytatu (bo muszę wcisnąć klawisz shift). Wtedy każdego dnia, ja zmarnuj 3 sekundy. Jeśli koduję w ten sposób przez 200 dni w roku przez 40 lat, to zmarnowałem 6,7 godziny mojego życia. Pokarm do myślenia.

 9
Author: John Kurlak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-22 03:59:33

Badanie za i przeciw

Na rzecz pojedynczych cytatów

  • mniej bałaganu wizualnego.
  • generowanie HTML: atrybuty HTML są zwykle rozdzielane podwójnymi cudzysłowami.

elem.innerHTML = '<a href="' + url + '">Hello</a>';
Jednak pojedyncze cudzysłowy są tak samo legalne w HTML.

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

Ponadto, inline HTML jest zwykle anty-wzorcem. Preferuj szablony.

  • generowanie JSON: tylko podwójne cudzysłowy są dozwolone w JSON.

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

Ponownie, nie powinieneś konstruować JSON w ten sposób. JSON.stringify () jest wystarczająco często. Jeśli nie, użyj szablonów.

Za podwójnymi cudzysłowami

  • Podwójne są łatwiejsze do wykrycia, jeśli nie masz kodowania kolorów. Jak w dzienniku konsoli lub w jakiejś konfiguracji źródła widoku.
  • podobieństwo do innych języków: w programowaniu shell (Bash itp.), pojedyncze cytowane literały łańcuchowe istnieją, ale znaki specjalne nie są interpretowane wewnątrz oni. C i Java używają podwójnych cudzysłowów dla ciągów znaków i pojedynczych cudzysłowów dla znaków.
  • Jeśli chcesz, aby Kod był poprawny JSON, musisz użyć podwójnych cudzysłowów.

Na korzyść obu

Nie ma różnicy między tymi dwoma w JavaScript. Dlatego możesz użyć tego, co jest wygodne w tej chwili. Na przykład następujące literały łańcuchowe wytwarzają ten sam ciąg znaków:

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

Pojedyncze cudzysłowy dla ciągów wewnętrznych i podwójne dla zewnętrzne. Pozwala to odróżnić stałe wewnętrzne od ciągów znaków, które mają być wyświetlane użytkownikowi (lub zapisywane na dysk itp.). Oczywiście powinieneś unikać umieszczania tego drugiego w swoim kodzie, ale nie zawsze można to zrobić.

 9
Author: Divyesh Kanzariya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 14:51:54

Jeszcze jedną rzeczą, którą warto rozważyć jako przyczynę przejścia z cudzysłowów podwójnych na pojedyncze, jest wzrost popularności skryptów po stronie serwera. Podczas korzystania z PHP możesz przekazywać zmienne i analizować funkcje javascript za pomocą łańcuchów i zmiennych w PHP.

Jeśli napiszesz łańcuch znaków i użyjesz podwójnych cudzysłowów dla swojego PHP, nie będziesz musiał uciekać od żadnego z pojedynczych cudzysłowów, A PHP automatycznie pobierze wartość zmiennych dla Ciebie.

Przykład: I need to run funkcja javascript wykorzystująca zmienną z mojego serwera.

public static function redirectPage( $pageLocation )
{
    echo "<script type='text/javascript'>window.location = '$pageLocation';</script>";
}

To oszczędza mi wiele kłopotów w radzeniu sobie z łączeniem ciągów, i mogę skutecznie wywołać javascript z PHP. Jest to tylko jeden przykład, ale może to być jeden z kilku powodów, dla których programiści domyślnie stosują pojedyncze cudzysłowy w javascript.

Cytuj z dokumentów PHP: "najważniejszą cechą podwójnie cytowanych łańcuchów jest fakt, że nazwy zmiennych będą rozszerzane. Zobacz string parsing dla szczegóły. "

 8
Author: Dodzi Dzakuma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-12 01:20:53

Użyłbym podwójnych cudzysłowów, gdy nie można użyć pojedynczych cudzysłowów i odwrotnie:

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

Zamiast:

'\'' + singleQuotedValue + '\''
"\"" + doubleQuotedValue + "\""
 6
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-24 18:55:51

Nie ma różnicy między pojedynczymi i podwójnymi cudzysłowami w JavaScript.

Specyfikacja jest ważna:

Może istnieją różnice wydajności, ale są one absolutnie minimalne i mogą zmieniać się codziennie w zależności od implementacji przeglądarek. Dalsza dyskusja jest daremna, chyba że Twoja aplikacja JavaScript ma setki tysięcy długości.

It ' s like a benchmark if

a=b;

Jest szybszy niż

a = b;

(dodatkowe spacje)

Dzisiaj, w konkretnej przeglądarce i platformy itp.

 6
Author: 2 revs, 2 users 83%mauro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-21 23:10:20

Podczas korzystania z CoffeeScript używam podwójnych cudzysłowów. Zgadzam się, że powinieneś wybrać jedno i trzymać się tego. CoffeeScript zapewnia interpolację podczas używania cudzysłowów podwójnych.

"This is my #{name}"

ES6 używa back ticks (`) dla łańcuchów szablonów. Co prawdopodobnie ma dobry powód, ale podczas kodowania może być kłopotliwe, aby zmienić znak ciąg znaków z cudzysłowów lub podwójnych cudzysłowów do tylnych wskazów, aby uzyskać funkcję interpolacji. CoffeeScript może nie jest idealny, ale używając tego samego ciąg znaków literałów wszędzie (podwójne cudzysłowy) i zawsze być w stanie interpolować jest miłą cechą.

`This is my ${name}`
 6
Author: GijsjanB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-07 16:52:10

Są ludzie, którzy twierdzą, że widzą różnice w wydajności: stary wątek listy dyskusyjnej. Ale nie mogłem znaleźć żadnego z nich do potwierdzenia.

Najważniejsze jest sprawdzenie, jakiego rodzaju cudzysłowów (podwójnych lub pojedynczych) używasz w swoim łańcuchu. Pomaga to utrzymać niską liczbę ucieczek. Na przykład, gdy pracujesz z html wewnątrz ciągów, łatwiej jest używać pojedynczych cudzysłowów, dzięki czemu nie musisz unikać wszystkich podwójnych cudzysłowów wokół atrybutów.

 5
Author: Michiel Overeem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 10:43:19

Jeśli przeskakujesz między JavaScript i C#, najlepiej trenować palce do wspólnej konwencji, która jest podwójnymi cudzysłowami.

 5
Author: moomoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-21 06:58:28

[1]}sprawdzałem następujące około 20 razy. I wydaje się, że podwójne cytaty są o 20% szybsze.

Zabawne jest to, że jeśli zmienisz część 2 i część 1, pojedyncze cytaty są o 20% szybsze.

//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
Author: Bastiaan Linders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-21 23:11:15

Po przeczytaniu wszystkich odpowiedzi, które mówią, że może być szybszy lub może mieć zalety, powiedziałbym, że podwójny cytat jest lepszy, a może też szybszy, ponieważ Google closure compiler Konwertuj pojedyncze cytaty na podwójne cytaty.

 4
Author: Mohsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-18 05:22:02

Nie ma żadnej różnicy, więc jest to głównie kwestia gustu i tego, co jest w łańcuchu (lub czy sam kod JS jest w łańcuchu), aby Liczba Escape ' ów była niska.

Legenda o różnicy prędkości może pochodzić ze świata PHP, gdzie oba cudzysłowy mają inne zachowanie.

 3
Author: PhiLho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 12:49:22

Jeśli Twoje źródło JS to:

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

Źródłem HTML będzie:

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

Lub dla HTML5

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

JS pozwala na takie tablice:

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

Ale jeśli to wyślesz, to będzie z tego powodu:

JSON=["this","that"]
To na pewno zajmie trochę czasu.
 3
Author: B.F.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-05 07:06:12

Aby dodać moje 2 centy: pracując zarówno z JS i PHP kilka lat temu, przyzwyczaiłem się do używania pojedynczych cudzysłowów, więc mogę wpisać znak ucieczki ('\') bez konieczności ucieczki go również. Zwykle używałem go podczas wpisywania nieprzetworzonych ciągów ze ścieżkami plików, itp. ( http://en.wikipedia.org/wiki/String_literal#Raw_strings )

W każdym razie, moja konwencja stała się użyciem pojedynczych cudzysłowów na surowych ciągach znaków typu identyfikatora, takich jak if (typeof s == 'string') ... (w których znaki escape nigdy be used-ever), oraz podwójne cytaty dla tekstów , takich jak "Hey, what' s up?". Używam również pojedynczych cudzysłowów w komentarzach jako konwencji typograficznej do wyświetlania nazw identyfikatorów. Jest to po prostu zasada kciuka, a ja zrywam tylko wtedy, gdy jest to potrzebne, na przykład podczas wpisywania łańcuchów HTML '<a href="#"> like so <a>' (choć można też odwrócić cudzysłowy tutaj). Jestem również świadomy, że w przypadku JSON, podwójne cudzysłowy są używane do nazw - ale poza tym, osobiście wolę pojedyncze cudzysłowy, gdy Escape jest nigdy wymagane dla tekstu pomiędzy cudzysłowami-jak document.createElement('div').

Podsumowując, i jak niektórzy wspominali / nawiązywali do, wybierz konwencję, trzymaj się jej i odbiegaj tylko wtedy, gdy jest to konieczne.

 3
Author: James Wilkins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-12 19:47:04

Możesz używać cudzysłowów pojedynczych lub podwójnych. Pozwala to na przykład na łatwe zagnieżdżanie javascript wewnątrz atrybutów HTML, bez konieczności ucieczki od cudzysłowów. To samo dotyczy tworzenia javascript z PHP.

Ogólna idea brzmi: jeśli jest to możliwe, użyj takich cudzysłowów, które nie będą musiały uciekać. Mniej ucieczki = lepszy kod.

 3
Author: JJTalik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 17:11:01