Tôi muốn nói rằng sự khác biệt hoàn toàn là phong cách, nhưng tôi thực sự có nghi ngờ của mình. Hãy xem xét ví dụ sau:
/*
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);
Trong Safari, Chrome, Opera và Internet Explorer (đã được thử nghiệm trong IE7 và IE8), điều này sẽ trả về như sau:
function () {
return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
Tuy nhiên, Firefox sẽ mang lại một kết quả hơi khác:
function () {
return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
Các trích dẫn đơn đã được thay thế bằng dấu ngoặc kép. (Cũng lưu ý cách không gian thụt lề được thay thế bằng bốn khoảng trắng.) Điều này tạo ấn tượng rằng ít nhất một trình duyệt phân tích JavaScript bên trong như thể mọi thứ được viết bằng dấu ngoặc kép. Mọi người có thể nghĩ, Firefox sẽ mất ít thời gian hơn để phân tích JavaScript nếu mọi thứ đã được viết theo 'tiêu chuẩn' này.
Nhân tiện, điều đó làm cho tôi trở thành một con gấu trúc rất buồn, vì tôi nghĩ rằng các trích dẫn đơn lẻ trông đẹp hơn trong mã. Ngoài ra, trong các ngôn ngữ lập trình khác, chúng thường được sử dụng nhanh hơn so với dấu ngoặc kép, do đó, sẽ chỉ có ý nghĩa nếu áp dụng tương tự cho JavaScript.
Kết luận: Tôi nghĩ rằng chúng ta cần nghiên cứu thêm về điều này.
Chỉnh sửa: Điều này có thể giải thích kết quả kiểm tra của Peter-Paul Koch từ hồi năm 2003.
Có vẻ như các trích dẫn đơn đôi khi nhanh hơn trong Explorer Windows (khoảng 1/3 các thử nghiệm của tôi đã cho thấy thời gian phản hồi nhanh hơn), nhưng nếu Mozilla cho thấy sự khác biệt hoàn toàn, thì nó xử lý các trích dẫn nhanh hơn một chút. Tôi không tìm thấy sự khác biệt nào trong Opera.
Chỉnh sửa 2014: Các phiên bản hiện đại của Firefox / Spidermonkey không làm điều này nữa.