Thử nắm bắt JavaScript có thực hành tốt không?
JavaScript hỗ trợ một tập hợp nhỏ gọn các câu lệnh, đặc biệt là các câu lệnh điều khiển luồng mà bạn có thể sử dụng để kết hợp nhiều tính tương tác trong ứng dụng của mình. Chương này cung cấp một cái nhìn tổng quan về những tuyên bố này Show Tham chiếu JavaScript chứa thông tin chi tiết đầy đủ về các câu lệnh trong chương này. Ký tự dấu chấm phẩy ( 0) được dùng để ngăn cách các câu lệnh trong mã JavaScriptBất kỳ biểu thức JavaScript nào cũng là một câu lệnh. Xem Biểu thức và toán tử để biết thông tin đầy đủ về biểu thức Câu lệnh cơ bản nhất là câu lệnh khối, được sử dụng để nhóm các câu lệnh. Khối được giới hạn bởi một cặp dấu ngoặc nhọn
Câu lệnh khối thường được sử dụng với câu lệnh luồng điều khiển (_______0_______1, 2, 3)
Ở đây, 4 là câu lệnh chặnGhi chú. Các biến được khai báo 5 không nằm trong phạm vi khối, nhưng nằm trong phạm vi hàm hoặc tập lệnh chứa và tác động của việc đặt chúng vẫn tồn tại ngoài chính khối đó. Ví dụ
Điều này xuất ra ___0_______6 vì câu lệnh 7 trong khối có cùng phạm vi với câu lệnh 7 trước khối. (Trong C hoặc Java, mã tương đương sẽ có kết quả là _________9. )Hiệu ứng phạm vi này có thể được giảm thiểu bằng cách sử dụng 0 hoặc 1Một câu lệnh có điều kiện là một tập hợp các lệnh thực hiện nếu một điều kiện cụ thể là đúng. JavaScript hỗ trợ hai câu điều kiện. 2 và 3Sử dụng câu lệnh 1 để thực hiện câu lệnh nếu điều kiện logic là 5. Sử dụng mệnh đề tùy chọn 6 để thực hiện một câu lệnh nếu điều kiện là 7Một câu lệnh 1 trông như thế này
Ở đây, 9 có thể là bất kỳ biểu thức nào có giá trị là 5 hoặc 7. (Xem phần giải thích về những gì đánh giá thành 5 và 7. )Nếu 9 đánh giá thành 5, thì 6 được thực thi. Mặt khác, 7 được thực thi. 6 và 7 có thể là bất kỳ câu lệnh nào, bao gồm cả câu lệnh 1 lồng nhauBạn cũng có thể kết hợp các câu lệnh bằng cách sử dụng 1 để kiểm tra nhiều điều kiện theo trình tự, như sau
Trong trường hợp có nhiều điều kiện, chỉ điều kiện logic đầu tiên có giá trị là 5 mới được thực hiện. Để thực thi nhiều câu lệnh, hãy nhóm chúng trong một câu lệnh khối (______35_______3)Thực hành tốt nhấtNói chung, bạn nên luôn luôn sử dụng các câu lệnh khối—đặc biệt là khi lồng các câu lệnh 1
Nói chung, tốt nhất là không sử dụng 2 với một nhiệm vụ như 6 làm điều kiện
Tuy nhiên, trong trường hợp hiếm hoi bạn thấy mình muốn làm điều gì đó như vậy, tài liệu 3 có một phần hướng dẫn về cú pháp thực hành tốt nhất chung mà bạn nên biết và làm theoGiá trị giảCác giá trị sau ước tính thành 7 (còn được gọi là giá trị Sai)
Tất cả các giá trị khác—bao gồm tất cả các đối tượng—được đánh giá là 5 khi được chuyển đến một câu lệnh có điều kiệnGhi chú. Đừng nhầm lẫn các giá trị boolean nguyên thủy 5 và 7 với các giá trị đúng và sai của đối tượng 8Ví dụ
Ví dụTrong ví dụ sau, hàm 9 trả về 5 nếu số lượng ký tự trong đối tượng 1 là ba. Nếu không, nó sẽ hiển thị một cảnh báo và trả về 7
Câu lệnh 3 cho phép chương trình đánh giá một biểu thức và cố gắng so khớp giá trị của biểu thức đó với nhãn 4. Nếu tìm thấy một kết quả phù hợp, chương trình sẽ thực hiện câu lệnh liên quanMột câu lệnh 3 trông như thế này
JavaScript đánh giá câu lệnh chuyển đổi ở trên như sau
tuyên bố phá vỡCâu lệnh 2 tùy chọn được liên kết với mỗi mệnh đề 4 đảm bảo rằng chương trình sẽ thoát ra khỏi 3 sau khi câu lệnh phù hợp được thực thi, và sau đó tiếp tục thực hiện tại câu lệnh theo sau 3. Nếu 2 bị bỏ qua, chương trình sẽ tiếp tục thực hiện bên trong câu lệnh 3 (và sẽ đánh giá 4 tiếp theo, v.v.)Ví dụTrong ví dụ sau, nếu 9 ước tính thành 0, chương trình khớp giá trị với trường hợp 0 và thực thi câu lệnh liên quan. Khi gặp 2, chương trình thoát khỏi câu lệnh 3 và tiếp tục thực hiện từ câu lệnh sau 3. Nếu 2 bị bỏ qua, câu lệnh cho 6 cũng sẽ được thực hiện 0Bạn có thể đưa ra các ngoại lệ bằng cách sử dụng câu lệnh 7 và xử lý chúng bằng cách sử dụng câu lệnh 8Gần như bất kỳ đối tượng nào cũng có thể được ném vào JavaScript. Tuy nhiên, không phải tất cả các đối tượng bị ném đều được tạo ra như nhau. Mặc dù việc ném số hoặc chuỗi là lỗi phổ biến, nhưng việc sử dụng một trong các loại ngoại lệ được tạo riêng cho mục đích này thường hiệu quả hơn
Sử dụng câu lệnh 7 để đưa ra một ngoại lệ. Câu lệnh 7 chỉ định giá trị được ném 1Bạn có thể ném bất kỳ biểu thức nào, không chỉ biểu thức của một loại cụ thể. Đoạn mã sau đưa ra một số ngoại lệ thuộc các loại khác nhau 2Câu lệnh 8 đánh dấu một khối câu lệnh để thử và chỉ định một hoặc nhiều câu trả lời nếu một ngoại lệ được đưa ra. Nếu một ngoại lệ được ném ra, câu lệnh 8 sẽ bắt nóCâu lệnh 8 bao gồm một khối 09, chứa một hoặc nhiều câu lệnh và một khối 10, chứa các câu lệnh xác định phải làm gì nếu một ngoại lệ được ném vào khối 09Nói cách khác, bạn muốn khối 09 thành công—nhưng nếu không, bạn muốn quyền kiểm soát chuyển sang khối 10. Nếu bất kỳ câu lệnh nào trong khối 09 (hoặc trong một hàm được gọi từ bên trong khối 09) đưa ra một ngoại lệ, quyền điều khiển sẽ ngay lập tức chuyển sang khối 10. Nếu không có ngoại lệ nào được ném vào khối 09, thì khối 10 sẽ bị bỏ qua. Khối 19 thực thi sau khi khối 09 và 10 thực thi nhưng trước các câu lệnh theo sau câu lệnh 8Ví dụ sau sử dụng câu lệnh 8. Ví dụ gọi một hàm lấy tên tháng từ một mảng dựa trên giá trị được truyền cho hàm. Nếu giá trị không tương ứng với số tháng ( 9 – 25), một ngoại lệ được đưa ra với giá trị 26 và các câu lệnh trong khối 10 đặt biến 28 thành 29 3khối bắtBạn có thể sử dụng khối 10 để xử lý tất cả các ngoại lệ có thể được tạo trong khối 09 4Khối 10 chỉ định một mã định danh ( 33 trong cú pháp trước) giữ giá trị được chỉ định bởi câu lệnh 7. Bạn có thể sử dụng số nhận dạng này để nhận thông tin về ngoại lệ đã được némJavaScript tạo mã định danh này khi khối 10 được nhập. Mã định danh chỉ tồn tại trong khoảng thời gian của khối 10. Khi khối 10 kết thúc thực thi, mã định danh không còn tồn tạiVí dụ: đoạn mã sau đưa ra một ngoại lệ. Khi ngoại lệ xảy ra, quyền điều khiển sẽ chuyển sang khối 10 5Ghi chú. Khi ghi lỗi vào bảng điều khiển bên trong khối 10, nên sử dụng 40 thay vì 41 để gỡ lỗi. Nó định dạng thông báo là một lỗi và thêm nó vào danh sách các thông báo lỗi do trang tạo raKhối cuối cùngKhối 19 chứa các câu lệnh sẽ được thực thi sau khi khối 09 và 10 được thực thi. Ngoài ra, khối 19 thực thi trước mã theo sau câu lệnh 46Cũng cần lưu ý rằng khối 19 sẽ thực thi cho dù có ném ngoại lệ hay không. Tuy nhiên, nếu một ngoại lệ được ném ra, các câu lệnh trong khối 19 sẽ thực thi ngay cả khi không có khối 10 nào xử lý ngoại lệ được ném raBạn có thể sử dụng khối 19 để làm cho tập lệnh của bạn không thành công khi có ngoại lệ xảy ra. Ví dụ: bạn có thể cần giải phóng tài nguyên mà tập lệnh của bạn đã kết nốiVí dụ sau mở một tệp và sau đó thực hiện các câu lệnh sử dụng tệp. (JavaScript phía máy chủ cho phép bạn truy cập các tệp. ) Nếu một ngoại lệ được đưa ra trong khi tệp đang mở, khối 19 sẽ đóng tệp trước khi tập lệnh bị lỗi. Sử dụng 19 ở đây đảm bảo rằng tệp không bao giờ bị mở, ngay cả khi xảy ra lỗi 6Nếu khối 19 trả về một giá trị, giá trị này sẽ trở thành giá trị trả về của toàn bộ sản phẩm 46, bất kể bất kỳ câu lệnh 55 nào trong khối 09 và 10 7Việc ghi đè các giá trị trả về bằng khối 19 cũng áp dụng cho các ngoại lệ được ném hoặc ném lại bên trong khối 10 8làm tổ thử. câu lệnh bắtBạn có thể lồng một hoặc nhiều câu lệnh 8Nếu một khối 09 bên trong không có khối 10 tương ứng
Để biết thêm thông tin, xem trên trang tham khảo 8Tùy thuộc vào loại lỗi, bạn có thể sử dụng các thuộc tính 67 và 68 để nhận được thông báo tinh tế hơnThuộc tính 67 cung cấp loại chung của 70 (chẳng hạn như 01 hoặc 70), trong khi đó, 68 thường cung cấp một thông báo ngắn gọn hơn thông báo sẽ nhận được bằng cách chuyển đổi đối tượng lỗi thành một chuỗiNếu bạn đang đưa ra các ngoại lệ của riêng mình, để tận dụng lợi thế của các thuộc tính này (chẳng hạn như nếu khối 10 của bạn không phân biệt giữa ngoại lệ của riêng bạn và ngoại lệ của hệ thống), bạn có thể sử dụng hàm tạo 70
Sử dụng try catch trong JavaScript có tốt không?Một trong những lợi ích của thử/bắt là khả năng hiển thị lỗi do bạn tạo tùy chỉnh . Điều này được gọi là (lỗi ném). Trong những tình huống mà bạn không muốn thứ xấu xí này mà JavaScript hiển thị, bạn có thể loại bỏ lỗi của mình (một ngoại lệ) bằng cách sử dụng câu lệnh ném.
Việc sử dụng thử nắm bắt có tốt không?Không lạm dụng tính năng “Bắt thử”
. Đôi khi chúng tôi làm điều đó để giữ cho mã trông nhất quán giữa các tệp và phương thức khác nhau. Nhưng, thật không may, những điều này sẽ gây ra những tác động bất lợi cho cả hiệu suất của ứng dụng và khả năng phát hiện lỗi.
Là thử bắt không hiệu quả?thử bắt các khối có tác động không đáng kể đến hiệu suất nhưng Ném ngoại lệ có thể khá lớn, đây có thể là lúc đồng nghiệp của bạn nhầm lẫn. Lưu câu trả lời này.
Có thực hành xấu để bắt thử bắt lồng nhau không?Mặc dù điều này đôi khi không khả dụng, nhưng các khối try/catch lồng nhau ảnh hưởng nghiêm trọng đến khả năng đọc mã nguồn vì nó gây khó khăn cho việc hiểu khối nào sẽ bắt ngoại lệ nào. |