Hướng dẫn javascript should i use semicolons - javascript tôi có nên sử dụng dấu chấm phẩy không

Tôi luôn thúc đẩy việc sử dụng bán đại tá khi viết JavaScript. Thường thì thông dịch viên sẽ có thể suy ra chúng cho bạn; Nhưng tôi vẫn chưa thấy một lý do (ngoài sự lười biếng ;-)) Tại sao bạn lại cố tình viết mã của mình một cách chính xác hơn có thể.

Đối với tôi, nếu cấu trúc của mã là rõ ràng, sẽ thực sự rõ ràng nơi các dấu chấm phẩy đi, như vậy bạn thậm chí sẽ không phải nghĩ về nó sau khi có thói quen (tức là ở cuối mỗi dòng); Mặt khác, nếu nó không rõ ràng ngay lập tức với bạn nơi bán kết, thì rất có thể cấu trúc không phải là rõ ràng nhất, và các dấu chấm phẩy rõ ràng là cần thiết ở đó nhiều hơn họ sẽ ở nơi khác.

Nó cũng giúp bạn có thói quen hiểu và phân định các tuyên bố trong đầu, vì vậy bạn có một sự hiểu biết tốt hơn (thừa nhận) về cách mã của bạn có thể phân tích thành AST hoặc tương tự. Và đó phải là một điều tốt khi gỡ lỗi các lỗi cú pháp.

Hướng dẫn javascript should i use semicolons - javascript tôi có nên sử dụng dấu chấm phẩy không

Trong một trong những bài giảng JavaScript đầu tiên của chúng tôi tại Trường Flatiron, người hướng dẫn đã đề cập rằng các dấu chấm phẩy là tùy chọn trong JavaScript, ngoại trừ khi họ không 🤔

Tôi quyết định xem xét việc sử dụng dấu chấm phẩy trong JavaScript để thực sự hiểu lý do tại sao chúng tôi sẽ hoặc không muốn sử dụng chúng và sử dụng kiến ​​thức này để tránh tạo ra bất kỳ thói quen xấu nào từ rất sớm.

Hướng dẫn javascript should i use semicolons - javascript tôi có nên sử dụng dấu chấm phẩy không
Peter Arkle, https://opinionator.blogs.nytimes.com/2012/07/02/semicolons-a-love-story/

Chèn bán kết tự động (ASI)

Lý do dấu chấm phẩy đôi khi là tùy chọn trong JavaScript là do chèn dấu chấm phẩy tự động hoặc ASI. ASI không có nghĩa là các dấu chấm phẩy thực tế được chèn vào mã của bạn, nó có nhiều hơn một bộ quy tắc được sử dụng bởi JavaScript sẽ xác định liệu dấu chấm phẩy có được giải thích ở một số điểm nhất định hay không. Tôi đã tìm thấy một bài giảng hữu ích từ Fullstack Academy về chủ đề mà bạn có thể xem ở đây. Tôi cũng tìm thấy một bài đăng trên blog từ Bradley Braithwaite về chủ đề này. Dưới đây tôi nhấn mạnh các điểm chính từ các tài nguyên này.

3 Quy tắc chèn dấu chấm phẩy tự động:

Dưới đây là 3 điểm chính cần được nhận thức khi nói đến ASI.

1- Một dấu chấm phẩy sẽ được chèn vào khi nó xuất hiện qua một thiết bị kết thúc dòng hoặc '}' không đúng ngữ pháp. Vì vậy, nếu phân tích một dòng mã mới ngay sau dòng mã trước đó vẫn dẫn đến JavaScript hợp lệ, ASI sẽ không được kích hoạt.

Ví dụ 1:

sẽ trở thành:

Ví dụ 2:

Ở đây, ngữ pháp không mong đợi để xem B sau A, vì vậy ASI được kích hoạt

Ví dụ 3:

a = b + c 
(d + e).print() 

equals:

a = b + c(d + e).print();

2- Nếu chương trình kết thúc đầu vào và không có lỗi, nhưng đó không phải là một chương trình hoàn chỉnh, một dấu chấm phẩy sẽ được thêm vào cuối. Về cơ bản có nghĩa là một dấu chấm phẩy sẽ được thêm vào cuối tệp nếu nó bị thiếu.

3- Có một số địa điểm nhất định trong ngữ pháp trong đó, nếu việc phá vỡ dòng xuất hiện, nó sẽ chấm dứt câu lệnh vô điều kiện và nó sẽ thêm một dấu chấm phẩy. Một ví dụ về điều này là các câu lệnh trả lại.


function getCheese() {
    return 
    { 
       cheeseType: "Gouda"
    } 
}

Điều này sẽ kích hoạt ASI và kết quả là:


function getCheese() {
    return; 
    { 
       cheeseType: "Gouda"
    } 
  }

Biểu thức trong câu lệnh trả về sẽ bắt đầu trên cùng một dòng, như thế này:


function getCheese() {
    return { 
       cheeseType: "Gouda"
    } 
  }

Khi nào tôi không nên sử dụng dấu chấm phẩy?

Dưới đây là một vài trường hợp bạn không cần dấu chấm phẩy:

if (...) {...} other {...} for (...) {...} while (...) {...}
for (...) {...}
while (...) {...}

Lưu ý: bạn cần một sau: làm {...} while (...);

Suy nghĩ cuối cùng

Nếu bạn sẽ viết JavaScript của mình mà không có dấu chấm phẩy tùy chọn, có lẽ ít nhất là biết ASI đang làm gì. Ví dụ: nén hoặc thu nhỏ có thể khiến mã hợp lệ của bạn bị lỗi vì các chương trình đó có thể dựa vào dấu chấm phẩy.

Ngoài ra, có thể khó gỡ lỗi hơn mà không có dấu chấm phẩy vì mã của bạn có thể được kết hợp với nhau mà không nhận ra nó. Nếu bạn đặt một dòng phá vỡ ở nơi không nên có một, ASI có thể nhảy vào và giả sử một dấu chấm phẩy ngay cả khi không nên có một.

Hướng dẫn javascript should i use semicolons - javascript tôi có nên sử dụng dấu chấm phẩy không
https://www.everywordcounts.co.uk/no-need-to-be-scared-of-semicolons/

Các công ty và các dự án nguồn mở có thể sẽ có ưu tiên bằng cách này hay cách khác, vì vậy hãy chắc chắn lưu ý nó là gì.

Cuối cùng, nếu bạn nghĩ rằng bạn có thể gặp lỗi do ASI, hãy kiểm tra Babeljs.io để gỡ lỗi - nó cho phép bạn đặt mã của mình và cho bạn thấy các dấu chấm phẩy ASI đang được chèn vào đâu.

Bạn đã tìm thấy điều gì là đúng khi nói đến dấu chấm phẩy trong JavaScript?