Là một nhà phát triển, tôi vẫn đang sử dụng dấu chấm phẩy khi lập trình bằng JavaScript. Với rất nhiều người trong chúng ta đến từ nền tảng C ++, Java hoặc PHP, bạn có thể gọi đó là một thói quen cũ. Nhưng trong những năm gần đây, nhiều người đã bắt đầu tránh dùng dấu chấm phẩy trong khi một số người vẫn tiếp tục sử dụng chúng. Vì vậy, câu hỏi về dấu chấm phẩy đã chia rẽ cộng đồng nhà phát triển JavaScript
Tại sao chúng ta cần sử dụng dấu chấm phẩy trong JavaScript?
Ảnh của Nik Shuliahin 💛💙 trên Bapt
Dấu chấm phẩy trong JavaScript
Theo MDN,
Dấu chấm phẩy không cần thiết sau câu lệnh nếu nó được viết trên dòng riêng của nó. Nhưng nếu muốn có nhiều hơn một câu lệnh trên một dòng, thì chúng phải được phân tách bằng dấu chấm phẩy
Vì vậy, dấu chấm phẩy [;] được sử dụng ở cuối để phân tách các câu lệnh trong JavaScript. Ở một số nơi, dấu chấm phẩy là bắt buộc nhưng nó thêm chúng ở hậu trường. Điều này đưa chúng ta đến quy trình Chèn dấu chấm phẩy tự động [ASI]
Chèn dấu chấm phẩy tự động [ASI] trong JavaScript là gì?
ECMAScript có các quy tắc để tự động chèn dấu chấm phẩy [ASI] vào cuối câu lệnh. Trình phân tích cú pháp JavaScript sẽ tự động thêm dấu chấm phẩy khi phân tích cú pháp mã nguồn
Báo cáo bị ảnh hưởng bởi ASI
Việc chèn dấu chấm phẩy tự động ảnh hưởng đến các câu lệnh bên dưới. Vì vậy, hãy xem xét các câu dưới đây nếu bạn không sử dụng dấu chấm phẩy
// is transformed into
0,
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
1, câu lệnh biến
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
2,
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
3, khai báo mô-đun
console.log["Month"]['March', 'Jan', 'Feb'].sort[];- câu biểu cảm
// is transformed into
4
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
0,
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
1,
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
2
console.log["Month"]['March', 'Jan', 'Feb'].sort[];// is transformed into
3
console.log["Month"]['March', 'Jan', 'Feb'].sort[];
ví dụ
console.log["Month"]
['March', 'Jan', 'Feb'].sort[]
Bạn sẽ gặp lỗi Uncaught TypeError. Không thể đọc các thuộc tính của không xác định [đọc 'Feb']. Bạn đang gặp lỗi do chuyển đổi được hiển thị bên dưới
// is transformed into
console.log["Month"]['March', 'Jan', 'Feb'].sort[];
a = b
++c
// is transformed to
a = b;
++c;
Đọc thêm về tài liệu MDN về chèn dấu chấm phẩy tự động
Tại sao chúng ta cần sử dụng dấu chấm phẩy trong JavaScript?
- Nó sẽ làm cho mã dễ hiểu hơn vì chúng tôi biết khi nào một câu lệnh kết thúc
- Làm cho mã tổng thể rõ ràng hơn
- Nó được coi là một cách thực hành tốt nhất theo kiểu cú pháp MDN
- Trong một số trường hợp, chúng tôi có thể sử dụng nhiều câu lệnh trên một dòng
- Chúng tôi có thể tránh các câu lệnh bị ảnh hưởng bởi việc chèn dấu chấm phẩy tự động
- Ngoài ra, dấu chấm phẩy được yêu cầu sử dụng với vòng lặp và câu lệnh trả về
Ví dụ
const numbers = [1, 2, 3, 4, 5]
for [let i = 0; i < numbers.length; i++] {
console.log[numbers[i]]
}
Vòng lặp for sẽ không hoạt động nếu không có dấu chấm phẩy
// is transformed into
console.log["Month"]['March', 'Jan', 'Feb'].sort[];
4Tại sao chúng ta cần tránh sử dụng dấu chấm phẩy trong JavaScript?
- Nó cũng làm cho mã rõ ràng hơn [luôn sử dụng một câu lệnh cho một dòng]
- Ngoài ra, ít mã hơn [chúng tôi đã lưu một lần bấm phím cho dấu chấm phẩy 😊]
- Dù sao đi nữa, ASI sẽ xử lý dấu chấm phẩy đằng sau hậu trường [vâng, bây giờ chúng ta đã biết về ASI 👍]
- Cũng phổ biến trong tiêu chuẩn sử dụng kiểu không có dấu chấm phẩy
Định dạng mã đẹp hơn cung cấp tùy chọn để tránh dấu chấm phẩy
Phần kết luận
Ảnh của JESHOOTS. COM trên Bapt
Chúng tôi hiểu rõ rằng dấu chấm phẩy JavaScript không cần thiết ở cuối câu lệnh. Ngoài ra, Chèn dấu chấm phẩy tự động [ASI] thêm dấu chấm phẩy phía sau hậu trường trong quá trình phân tích cú pháp. Nhưng nó có thể gây ra lỗi ASI và ảnh hưởng đến một số tuyên bố của bạn
Vì vậy, bạn có thể tránh sử dụng dấu chấm phẩy nếu bạn biết về khái niệm ASI, sau đó bạn nên chú ý đến khái niệm này khi viết mã
Nhưng nhìn chung, nó hoàn toàn phụ thuộc vào quyết định và sự thuận tiện của bạn. Ngoài ra, có lẽ trên hướng dẫn viết mã của nhóm bạn
Người giới thiệu
//developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types
//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#automatic_semicolon_insertion
//flaviocopes.com/javascript-automatic-semicolon-insertion/
Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin miễn phí hàng tuần của chúng tôi. Theo dõi chúng tôi trên Twitter, LinkedIn, YouTube và Discord