Câu trả lời:
Dấu chấm phẩy sau khi khai báo hàm là không cần thiết .
Ngữ pháp của a FunctionDeclaration
được mô tả trong đặc tả như sau:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Không có dấu chấm phẩy yêu cầu về mặt ngữ pháp, nhưng có thể tự hỏi tại sao?
Dấu chấm phẩy dùng để phân tách các câu lệnh với nhau vàFunctionDeclaration
không phải là một câu lệnh .
FunctionDeclarations
được đánh giá trước khi mã đi vào thực thi, cẩu là một từ phổ biến được sử dụng để giải thích hành vi này.
Các thuật ngữ "khai báo hàm" và "tuyên bố hàm" thường được sử dụng sai thay thế cho nhau, bởi vì không có câu lệnh hàm nào được mô tả trong Đặc tả ECMAScript, tuy nhiên có một số cách triển khai bao gồm một câu lệnh hàm trong ngữ pháp của chúng, đặc biệt là Mozilla- nhưng một lần nữa là không chuẩn.
Tuy nhiên, dấu chấm phẩy luôn được khuyến nghị ở nơi bạn sử dụng FunctionExpressions
, ví dụ:
var myFn = function () {
//...
};
(function () {
//...
})();
Nếu bạn bỏ qua dấu chấm phẩy sau hàm đầu tiên trong ví dụ trên, bạn sẽ nhận được kết quả hoàn toàn không mong muốn:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Hàm đầu tiên sẽ được thực thi ngay lập tức, vì các dấu ngoặc đơn bao quanh hàm thứ hai, sẽ được hiểu là Arguments
lệnh gọi hàm.
Bài giảng khuyến nghị:
FunctionDeclaration
vs FunctionExpression
)Tôi sử dụng chúng sau khi khai báo hàm như biến:
var f = function() { ... };
nhưng không theo định nghĩa kiểu cổ điển:
function f() {
...
}
JS Lint là quy ước thực tế và nó nói không có dấu chấm phẩy sau chức năng cơ thể. Xem phần "Dấu chấm phẩy" .
Chỉ cần kiên định! Chúng không cần thiết, nhưng cá nhân tôi sử dụng chúng vì hầu hết các kỹ thuật thu nhỏ đều dựa vào dấu chấm phẩy (ví dụ: Packer ).
Thực sự chỉ phụ thuộc vào sở thích của bạn. Tôi thích kết thúc các dòng mã bằng dấu hai chấm vì tôi đã quen với Java, C ++, C #, v.v., vì vậy tôi sử dụng các tiêu chuẩn tương tự để mã hóa trong javascript.
Tôi thường không kết thúc khai báo hàm trong dấu hai chấm, nhưng đó chỉ là sở thích của tôi.
Các trình duyệt sẽ chạy theo bất kỳ cách nào, nhưng có thể một ngày nào đó họ sẽ đưa ra một số tiêu chuẩn khắt khe hơn về điều này.
Ví dụ về mã tôi sẽ viết:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
Nó thực sự còn hơn cả một vấn đề về quy ước hay tính nhất quán.
Tôi khá chắc chắn rằng không đặt dấu chấm phẩy sau mỗi câu lệnh làm chậm trình phân tích cú pháp nội bộ bởi vì nó phải tìm ra nơi kết thúc của câu lệnh. Tôi ước tôi có một số số tiện dụng để bạn xác nhận tích cực điều đó, nhưng có lẽ bạn có thể tự google nó. :)
Ngoài ra, khi bạn đang nén hoặc rút gọn mã, việc thiếu dấu hai chấm có thể dẫn đến một phiên bản rút gọn của tập lệnh không thực hiện được những gì bạn muốn vì tất cả khoảng trắng sẽ biến mất.
Khi tôi rút gọn các tập lệnh của mình, tôi nhận ra rằng tôi cần sử dụng dấu chấm phẩy cho các hàm bắt đầu bằng dấu bằng. nếu bạn định nghĩa một hàm là var, vâng, bạn cần sử dụng dấu chấm phẩy.
cần dấu chấm phẩy
var x = function(){};
var x = new function(){};
this.x = function(){};
không cần dấu chấm phẩy
function x(){}
ĐƠN GIẢN:
Đó là một thực hành tốt để rời khỏi dấu chấm phẩy ;
sau khi kết thúc niềng răng chức năng. Họ đã được coi là một thực hành tốt nhất trong nhiều năm.
Một lợi thế của việc luôn sử dụng chúng là nếu bạn muốn thu nhỏ JavaScript của mình.
Khi thu nhỏ Javascript, giúp giảm kích thước tệp một chút.
Nhưng đối với thực tiễn tốt nhất và câu trả lời ở trên, không nên sử dụng nó sau một thẻ chức năng.
Nếu bạn không sử dụng dấu chấm phẩy và nếu bạn muốn thu nhỏ (như rất nhiều nhà phát triển muốn làm nếu trang web của họ phục vụ nhiều JavaScript), bạn có thể nhận được tất cả các loại Lỗi / Cảnh báo.
dấu chấm phẩy sau một chức năng không cần thiết sử dụng nó hay không, không gây ra lỗi trong chương trình của bạn. tuy nhiên, nếu bạn có kế hoạch thu nhỏ mã của mình, thì sử dụng dấu chấm phẩy sau các hàm là một ý tưởng tốt. nói ví dụ bạn có mã như bên dưới
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
và
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
Khi bạn thu nhỏ cả hai, bạn sẽ nhận được như sau
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
và
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};