Dấu chấm phẩy không phải lúc nào cũng bắt buộc, nhưng tôi luôn khuyên bạn nên sử dụng chúng. Xem ECMAScript spec cho các quy tắc về tự động chèn dấu chấm phẩy:
Một số báo cáo ECMAScript (tuyên bố trống rỗng, tuyên bố thay đổi, tuyên bố biểu hiện, do-while tuyên bố, lệnh continue, break tuyên bố, tuyên bố trở lại, và ném tuyên bố) phải được chấm dứt bằng dấu chấm phẩy. Dấu chấm phẩy như vậy luôn có thể xuất hiện rõ ràng trong văn bản nguồn . Để thuận tiện, tuy nhiên, dấu chấm phẩy như vậy có thể được bỏ qua từ văn bản nguồn trong các tình huống nhất định. Các tình huống này là được mô tả bằng cách nói rằng dấu chấm phẩy tự động được chèn vào luồng mã thông báo mã nguồn trong các tình huống đó.
Cập nhật (giải thích thêm)
Có lẽ tình hình phổ biến nhất được sử dụng để hiển thị tại sao tự động chèn dấu chấm phẩy có thể xấu là đề cập đến bởi @sissonb trong câu trả lời khác. Hãy xem xét những điều sau đây:
function something(a, b) {
return
a + b;
}
gì bạn có thể mong đợi là cho mới xếp hàng để được bỏ qua, và mã hiểu là:
function something(a, b) {
return a + b;
}
Thật không may, tự động chèn dấu chấm phẩy đi vào chơi, và mã thực sự được diễn giải như sau:
function something(a, b) {
return;
a + b;
}
Và một câu hỏi trống return
có nghĩa là hàm trả về undefined
. Vì vậy, thay vì một số tiền tốt đẹp của hai đối số, bạn nhận được undefined
và có khả năng kết thúc rất bối rối như nơi bạn đã đi sai! Đó là lý do tại sao tôi hoàn toàn đồng ý với tuyên bố trong câu hỏi của bạn rằng chèn dấu chấm phẩy tự động là một sự không hài lòng khủng khiếp.
Xem: http://stackoverflow.com/questions/7219541/what-is-the-difference-between-semicolons-in-javascript-and-in-python/7219549#7219549 và câu trả lời khác cho câu hỏi – NullUserException
Hai câu lệnh của bạn đều có dấu chấm phẩy - không khác nhau. – Nightfirecat
@Nightfirecat - Ban đầu, chúng không giống như bản chỉnh sửa của NullUserException, đặt dấu chấm phẩy trở lại. Edit: nhưng sau đó gỡ bỏ nó một lần nữa! –