2010-10-23 47 views

Trả lời

66

Khái niệm này được gọi là Chèn dấu chấm phẩy JavaScript hoặc "Chèn dấu chấm phẩy tự động". bài đăng blog: JavaScript Semicolon Insertion: Everything you need to know vạch ra các khái niệm cũng một cách dễ hiểu bằng ví dụ dưới tiêu đề:

  • đâu phẩy được phép
  • đâu phẩy thể được bỏ qua
  • Các quy tắc

Nó thậm chí digs vào official ECMAScript specification về chủ đề.

+0

Theo nguyên tắc, ngắt dòng có thể thay thế các dấu chấm phẩy bằng một vài ngoại lệ trực quan: (1) các câu lệnh trống: 'while (true);', (2) bên trong cú pháp vòng lặp for 'for (;;)' và (3) khi thay thế sẽ phá vỡ mã, ví dụ: 'a = b \ n + c' hoặc' $ http (...) \ n .success (...) 'sẽ là mã không hợp lệ nếu \ n là thay thế, vì vậy nó chỉ đơn giản là không. – VinGarcia

+0

Ops, tôi bỏ lỡ 2 trường hợp góc hiếm nhưng quan trọng sẽ không phân tích cú pháp như mong đợi mà không có dấu chấm phẩy: 'a = b \ n (hàm (...) {...})() 'sẽ phân tích như thể \ n không tồn tại, và' a = b \ n [1,2,3] .forEach (...) 'cũng sẽ phân tích như thể nó là một biểu thức duy nhất. Vì vậy, trong những trường hợp này, một dấu chấm phẩy là cần thiết. – VinGarcia

2

Nếu không có lỗi trình biên dịch, bạn nên ổn. Tuy nhiên, tốt hơn là bạn nên nhớ sử dụng chúng mọi lúc, vì một số ngôn ngữ mà bạn có thể tham gia, chẳng hạn như mục tiêu-c đều kiên quyết về việc sử dụng chúng.

+7

ghi nhớ quy tắc cú pháp bằng một ngôn ngữ không có bất kỳ lợi ích nào đối với các ngôn ngữ khác. – SingleNegationElimination

+5

Nhưng quy tắc của dấu chấm phẩy quá phổ biến đến nỗi nhớ chung nó có nhiều lợi ích. –

13

Javascript thực hiện điều gì đó gọi là "chèn dấu chấm phẩy" có nghĩa là bạn thực sự có thể viết mã bỏ dấu chấm phẩy ở một số địa điểm nhất định và về cơ bản chúng sẽ được thêm vào cho bạn khi mã được phân tích cú pháp.

Các quy tắc xung quanh khi điều này xảy ra phức tạp một chút. Để đơn giản, nhiều nhà phát triển chỉ đơn giản giả vờ chèn dấu chấm phẩy không tồn tại.

+34

Đôi khi tôi tưởng tượng về một thế giới nơi chèn dấu chấm phẩy không tồn tại. – JAL

+1

Có một chủ đề thú vị gần đây trên danh sách gửi thư của node.js đáng để đọc: http://groups.google.com/group/nodejs/browse_thread/thread/3166a2bd54e2acf6?pli=1. Kiểm tra phong cách mã hóa của Isaac Schlueter; đó là một cách thú vị để tận dụng ASI - nó không nhất thiết là một điều xấu :) – ShZ

+0

Tài liệu kiểu mã của Isaac Schlueter đã di chuyển: https://github.com/isaacs/npm/blob/master/doc/misc/npm- coding-style.md – Pylinux

3

Dấu chấm phẩy không bắt buộc đối với lập trình JavaScript, tuy nhiên tôi khuyên bạn nên sử dụng nó. Nó làm cho mã của bạn dễ đọc hơn và thực sự là một thực hành tốt, và hầu như tất cả các ngôn ngữ lập trình thú vị đều sử dụng nó.

Hãy đứng lên và sử dụng nó, nó thuộc vào bạn ngay bây giờ!

+7

Không đúng là dấu chấm phẩy không bắt buộc. Từ thông số: 'Một số câu lệnh ECMAScript ** nhất định phải ** được chấm dứt bằng dấu chấm phẩy.' http://bclary.com/2004/11/07/#a-7.9 –

+0

vâng bạn có quyền tôi làm rõ nhờ Tự động chèn có nhiều trường hợp bạn được phép tránh nó nhưng (một NHƯNG lớn) như tôi đã nói trước khi tôi không nghĩ là thực hành tốt để làm điều đó – Necronet

+2

Trong Scala và Groovy (và Python) bạn không cần dấu chấm phẩy, và nó là thành ngữ hơn không sử dụng chúng. Các ngôn ngữ "tuyệt vời" mà bạn sử dụng dấu chấm phẩy đó là gì? – Pylinux

4

Bạn thể viết javascript mà không semiconon, bạn chỉ cần chèn chúng nếu bạn bắt đầu một dòng với một parantesis (hoặc một khung [

Các sugarjs lần() chức năng là một ví dụ điển hình:.

<script> 
    var somthing = 1 + 3 
    ;(5).times(function(n){ 
     console.log(n + " line") //prints "X line" 5 times 
    }) 
</script> 

bài viết này đã bóc trần hầu hết các huyền thoại surounding javascript và dấu chấm phẩy: link

+1

bạn cũng không cần sử dụng thẻ đóng html, trình duyệt sẽ tự động đóng chúng –

+4

Cá nhân tôi không đồng ý về việc đóng các thẻ html vì hai lý do: 1. Chúng được yêu cầu bởi [XHTML] (http: //codex.wordpress .org/HTML_to_XHTML # All_tags_must_be_closed.2C_even_single_tags) tiêu chuẩn. (Dấu chấm phẩy là tùy chọn trong tiêu chuẩn [ECMA] (http://www.ecma-international.org/ecma-262/5.1/#sec-7.9)) 2. Họ cung cấp cấu trúc cho mã của bạn, họ nói điều gì đó về nơi các thẻ kết thúc. (Trong dấu chấm phẩy JavaScript cho biết dòng cuối cùng, và chúng ngay lập tức chảy bởi một dòng mới nói giống nhau) Tôi không có nghĩa là âm thanh khắc nghiệt, nếu bạn và nhóm của bạn viết mà không đóng thẻ thì Godsspeed :-) – Pylinux

+2

@DavidFregoli trình duyệt sẽ nhận được rất nhiều sai thời gian –

1

Để nói rằng viết mã với phẩy làm cho nó nhiều readab le là ngớ ngẩn. Nó làm cho mã của bạn thêm CLUTTERED. Nhìn vào mã trên trang này mà không có dấu chấm phẩy và cho tôi biết nó không thể đọc được. Đó là dễ đọc hơn, ít lộn xộn, sạch hơn và thanh lịch hơn. Dấu chấm phẩy là xấu xí và không cần thiết. Xem bài viết này: http://mislav.uniqpath.com/2010/05/semicolons/

+1

Không thể không đồng ý hơn. Tôi đã nhìn thấy mã với vài sau đó/khối khác và không có dấu chấm phẩy và tôi không thể tin tưởng nó ... giống như một điệu nhảy saber trên một sàn mới sáp, được sử dụng để được bảo lưu như một trò đùa về ngôn ngữ C. – Kim

Các vấn đề liên quan