Vorrei dire che la differenza è puramente stilistica, ma ho davvero i miei dubbi. Considera il seguente esempio:
/*
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 e Internet Explorer (testato in IE7 e IE8), questo restituirà quanto segue:
function () {
return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
Tuttavia, Firefox produrrà un risultato leggermente diverso:
function () {
return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
Le virgolette singole sono state sostituite da virgolette doppie. (Nota anche come lo spazio di rientro è stato sostituito da quattro spazi.) Questo dà l'impressione che almeno un browser analizzi JavaScript internamente come se tutto fosse scritto usando virgolette doppie. Si potrebbe pensare, Firefox impiega meno tempo per analizzare JavaScript se tutto è già scritto secondo questo "standard".
Il che, tra l'altro, mi rende un panda molto triste, dal momento che penso che le virgolette singole siano molto più belle nel codice. Inoltre, in altri linguaggi di programmazione, di solito sono più veloci da usare rispetto alle doppie virgolette, quindi avrebbe senso solo se lo stesso fosse applicato a JavaScript.
Conclusione: penso che dobbiamo fare ulteriori ricerche su questo.
Modifica: questo potrebbe spiegare i risultati dei test di Peter-Paul Koch nel 2003.
Sembra che le virgolette singole siano a volte più veloci in Windows Explorer (circa 1/3 dei miei test hanno mostrato un tempo di risposta più veloce), ma se Mozilla mostra una differenza, gestisce le virgolette doppie leggermente più velocemente. Non ho trovato alcuna differenza in Opera.
Modifica 2014: le versioni moderne di Firefox / Spidermonkey non lo fanno più.