Я хотів би сказати, що різниця суто стилістична, але я справді маю сумніви. Розглянемо наступний приклад:
/*
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);
У Safari, Chrome, Opera та Internet Explorer (тестовано на IE7 та IE8) це поверне наступне:
function () {
return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
Однак Firefox дасть дещо інший результат:
function () {
return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
Одиночні цитати були замінені подвійними. (Також зауважте, як простір відступу було замінено чотирма пробілами.) Це створює враження, що принаймні один браузер внутрішньо розбирає JavaScript, ніби все написано за допомогою подвійних лапок. Можна подумати, що Firefox потребує менше часу для розбору JavaScript, якщо все вже написано відповідно до цього "стандарту".
Це, до речі, робить мене дуже сумною пандою, оскільки я думаю, що коди в коді виглядають набагато приємніше. Крім того, в інших мовах програмування вони зазвичай швидші у використанні, ніж подвійні лапки, тому це має сенс, лише якщо те саме застосовується до JavaScript.
Висновок: Я думаю, що нам потрібно зробити більше досліджень з цього приводу.
Редагувати: Це може пояснити результати тесту Пітера-Пола Коха ще у 2003 році.
Здається, що окремі цитати іноді швидше в Explorer Windows (приблизно 1/3 моїх тестів показали швидший час відгуку), але якщо Mozilla взагалі показує різницю, він обробляє подвійні лапки трохи швидше. Я не знайшов різниці в Opera.
Редагувати 2014: Сучасні версії Firefox / Spidermonkey більше не роблять цього.