Sử dụng `var` hay không
Bạn nên giới thiệu bất kỳ biến nào với var
câu lệnh, nếu không nó sẽ thuộc phạm vi toàn cầu.
Điều đáng nói là trong chế độ nghiêm ngặt ( "use strict";
) các bài tập biến không được khai báo sẽ némReferenceError
.
Hiện tại JavaScript không có phạm vi khối. Trường Crockford dạy bạn đặt các câu lệnh var ở đầu thân hàm , trong khi Hướng dẫn kiểu của Dojo đọc rằng tất cả các biến phải được khai báo trong phạm vi nhỏ nhất có thể . ( let
Tuyên bố và định nghĩa được giới thiệu trong JavaScript 1.7 không phải là một phần của tiêu chuẩn ECMAScript.)
Đó là một thực tiễn tốt để liên kết các thuộc tính của các đối tượng được sử dụng thường xuyên với các biến cục bộ vì nó nhanh hơn việc tra cứu toàn bộ chuỗi phạm vi. (Xem Tối ưu hóa JavaScript để có hiệu suất cao và mức tiêu thụ bộ nhớ thấp .)
Xác định những thứ trong tệp hoặc trong một `(function () {...}) ()`
Nếu bạn không cần phải tiếp cận các đối tượng của mình bên ngoài mã của mình, bạn có thể bọc toàn bộ mã của mình trong một biểu thức chức năng - nó được gọi là mẫu mô-đun. Nó có lợi thế về hiệu suất và cũng cho phép mã của bạn được thu nhỏ và che khuất ở mức cao. Bạn cũng có thể đảm bảo nó sẽ không gây ô nhiễm không gian tên toàn cầu. Hàm đóng gói trong JavaScript cũng cho phép bạn thêm hành vi hướng theo khía cạnh. Ben Cherry có một bài viết chuyên sâu về mô hình mô-đun .
Sử dụng 'cái này' hay không
Nếu bạn sử dụng kế thừa giả cổ điển trong JavaScript, bạn khó có thể tránh sử dụng this
. Đó là một vấn đề của hương vị mà mô hình thừa kế bạn sử dụng. Đối với các trường hợp khác, hãy xem bài viết của Peter Michaux về các tiện ích JavaScript mà không có "cái này" .
Sử dụng `function myname ()` hoặc `myname = function ();`
function myname()
là một khai báo hàm và myname = function();
là một biểu thức hàm được gán cho biến myname
. Biểu mẫu sau chỉ ra rằng các hàm là các đối tượng hạng nhất và bạn có thể làm bất cứ điều gì với chúng, như với một biến. Sự khác biệt duy nhất giữa chúng là tất cả các khai báo hàm được nâng lên trên cùng của phạm vi, điều này có thể quan trọng trong một số trường hợp nhất định. Nếu không thì chúng bằng nhau. function foo()
là một hình thức tốc ký. Thông tin chi tiết về cẩu nâng có thể được tìm thấy trong bài viết về Phạm vi và Tời kéo JavaScript .
Xác định các phương thức trong cơ thể của đối tượng hoặc sử dụng "nguyên mẫu"
Tuỳ bạn. JavaScript có bốn mẫu tạo đối tượng: giả cổ điển, nguyên mẫu, chức năng và các bộ phận ( Crockford, 2008 ). Mỗi người đều có ưu và nhược điểm, hãy xem Crockford trong các cuộc nói chuyện bằng video của mình hoặc nhận cuốn sách Những phần tốt như Anon đã đề xuất .
Khung
Tôi khuyên bạn nên chọn một số khung JavaScript, nghiên cứu các quy ước và kiểu dáng của chúng và tìm các thực tiễn và các mẫu phù hợp nhất với bạn. Chẳng hạn, Bộ công cụ Dojo cung cấp một khung mạnh mẽ để viết mã JavaScript hướng đối tượng, thậm chí hỗ trợ nhiều kế thừa.
Mẫu
Cuối cùng, có một blog dành riêng để khám phá các mẫu và các mẫu chống JavaScript phổ biến . Ngoài ra kiểm tra câu hỏi Có bất kỳ tiêu chuẩn mã hóa cho JavaScript? trong Stack Overflow.