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 Safari, Chrome, Opera i Internet Explorer (testowane w IE7 i IE8), to zwró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 cytaty zostały zastąpione podwójnymi. (Zwróć również uwagę, w jaki sposób wcięcie zostało zastąpione czterema spacjami). Sprawia to wrażenie, że co najmniej jedna przeglądarka analizuje JavaScript wewnętrznie, tak jakby wszystko zostało napisane przy użyciu podwójnych cudzysłowów. Można by pomyśleć, że Firefox zajmuje mniej czasu na przeanalizowanie JavaScript, jeśli wszystko jest już napisane zgodnie z tym „standardem”.
Co, nawiasem mówiąc, sprawia, że jestem bardzo smutną pandą, ponieważ myślę, że pojedyncze cytaty wyglądają o wiele ładniej w kodzie. Ponadto w innych językach programowania są zwykle szybsze w użyciu niż podwójne cudzysłowy, więc miałoby to sens tylko wtedy, gdyby to samo dotyczyło JavaScript.
Wniosek: Myślę, że musimy przeprowadzić więcej badań w tym zakresie.
Edycja: To może wyjaśniać wyniki testu Petera-Paula Kocha z 2003 roku.
Wygląda na to, że pojedyncze cudzysłowy są czasem szybsze w Eksploratorze Windows (mniej więcej 1/3 moich testów wykazała krótszy czas odpowiedzi), ale jeśli Mozilla w ogóle wykazuje różnicę, obsługuje podwójne cudzysłowy nieco szybciej. W Operze nie znalazłem żadnej różnicy.
Edycja 2014: Nowoczesne wersje Firefox / Spidermonkey już tego nie robią.