Tôi có thể sử dụng enum trong javascript không?

Enums trong JavaScript có thể mang lại nhiều lợi ích. Chúng giúp giảm thiểu lỗi chính tả trong trường hợp chuỗi đồng thời cung cấp tên tiếng Anh cho một số giá trị có thể là số. Các giá trị cũng được coi là hằng số và sẽ không bị thay đổi trong thời gian chạy — tất cả điều này, cũng như làm cho mã dễ dàng cấu trúc lại hơn với một nguồn sự thật duy nhất cho các giá trị. Điều gì không thích?

Hãy cùng xem một số ví dụ và cách triển khai enums

Xác định Enums của chúng tôi

Mặc dù JavaScript không có kiểu riêng cho enum, nhưng chúng ta luôn có thể tạo kiểu riêng của mình bằng cách sử dụng một đối tượng. Có một số quy ước thường được sử dụng khi xác định enum — mặc dù bạn không nhất thiết phải tuân theo chúng

  • Tên enum là Capital Case
  • Tránh viết tắt trừ khi chúng được sử dụng phổ biến
  • Các thuộc tính là HOA
  • Các thuộc tính được phân cách bằng dấu gạch dưới

Với suy nghĩ trên, chúng ta hãy xem những điều sau đây

Chúng tôi có một enum ở đây cho một số giá trị thời gian mà chúng tôi có thể sử dụng thường xuyên trong cơ sở mã của mình. Thay vì có các số thô trôi nổi xung quanh mà chúng ta có thể vô tình thêm 0 vào, chúng ta có một hằng số được xác định trong enum không bao giờ được thay đổi

Lợi ích của việc sử dụng enum ở đây sẽ là

  • Tự động hoàn thành trong IDE/trình soạn thảo
  • Nguồn duy nhất của sự thật
  • Tính nhất quán
  • Đánh dấu lỗi — Chúng tôi có thể bỏ lỡ số 0 trên giá trị, nhưng chúng tôi sẽ không bỏ lỡ một tên hằng sai chính tả
  • Có thể tìm kiếm theo tên

NB. Một lợi ích thường bị bỏ qua là việc đặt tên cụ thể cho giá trị trong enum sẽ cho phép chúng tôi tìm kiếm tất cả các cách sử dụng giá trị đó trong mã. Số 7 có thể xuất hiện hàng nghìn lần, nhưng DAYS_PER_WEEK sẽ xuất hiện ít hơn đáng kể

Những con số ma thuật được đánh giá quá cao

Gặp phải những con số kỳ diệu trong mã không bao giờ là niềm vui. Điều này dường như tùy ý 2 nghĩa là gì?

Nếu đây là một enum, thì giá trị có thể đã được đặt một cái tên tiết lộ ý định

Sau khi đặt tên riêng cho giá trị này trong một enum, chúng ta có thể thấy ngay giá trị này đang được sử dụng để làm gì. Đặt tên một cái gì đó chính xác trong mã là quan trọng. Nó làm cho mọi thứ dễ đọc, suy luận và dễ hiểu hơn

Như đã nói, việc có các số thô trong mã của chúng tôi không phải lúc nào cũng không thể giải mã được. Một số số phổ biến đến mức chúng tôi không thực sự cần làm nổi bật mục đích của chúng bằng tên, miễn là mã có thể tự giải thích được. Hãy xem xét những điều sau đây

const dailyPay = hourlyRate * 8

Ta có thể thấy rõ ràng số 8 tượng trưng cho số giờ làm việc trong một ngày. Giá trị này không nhất thiết đảm bảo được đặt trong một enum

Đảm bảo nó đông lạnh

Một điều cần xem xét khi tạo một enum là đảm bảo rằng đối tượng bị đóng băng. Gọi số nguyên gốc Object.freeze[value] sẽ ngăn chặn sự đột biến của các hằng số mà chúng ta xác định. Chúng tôi không muốn những giá trị này bị thay đổi trong thời gian chạy

Khi chúng ta gọi hàm này, chúng ta cần chuyển vào enum mới của mình và trạng thái hiện tại của nó sẽ bị đóng băng và được trả về. Nguyên mẫu của đối tượng cũng bị đóng băng. Không có thuộc tính nào có thể được sửa đổi, thêm hoặc xóa ngay bây giờ

Choices.ROCK = 'paper' // Returns 'paper'console.log[Choices.ROCK] // Logs 'rock'

Nếu bây giờ chúng ta cố gắng thay đổi đối tượng, giá trị mà chúng ta cố gán sẽ được trả về, nhưng trạng thái của đối tượng sẽ không bị thay đổi. Chúng ta có thể thấy điều này khi cố đăng xuất thuộc tính enum. Thuộc tính ROCK giữ lại giá trị ban đầu của nó là rock, như chúng ta mong đợi

NB. Đóng băng chỉ áp dụng cho các thuộc tính lớp trên cùng. Các đối tượng lồng nhau sẽ vẫn có thể thay đổi

Hãy cẩn thận với các giá trị được sử dụng

Một điều đáng chú ý là đôi khi chúng ta có thể gặp phải một vấn đề tế nhị. Chúng ta nên cảnh giác với việc sử dụng các giá trị giả mạo JavaScript làm giá trị trong enum của mình. Chúng có thể gây ra những cơn đau đầu không cần thiết

Vấn đề ở trên là enum của chúng ta đang sử dụng 0 làm giá trị cho tháng một. Đây là một giá trị giả trong JavaScript, có nghĩa là điều kiện chúng ta có sẽ ước tính thành true. Tất cả các giá trị giả sẽ dẫn đến ghi nhật ký ở trên. Điều này cũng xảy ra do sự so sánh lỏng lẻo giữa == và. sự so sánh chặt chẽ của ===, một chủ đề khác của riêng nó

Thay vào đó, hãy cố gắng tránh gán các giá trị giả trong enums

Ảnh của Simon Matzinger trên BaptCuối cùng cũng là một kết luận

Sử dụng khái niệm enums trong JavaScript có nhiều lợi ích với ít nhược điểm. Mặc dù nó có thể không phù hợp với mọi trường hợp sử dụng, nhưng nó chắc chắn đạt được phần lớn trong số họ. Vậy tại sao không tận dụng chúng?

Dưới đây là một số tài liệu tham khảo về các tài nguyên có thể thu hút sự quan tâm của bạn, nếu bạn muốn tìm hiểu thêm hoặc bắt đầu triển khai enum vào cơ sở mã của riêng mình, nếu bạn chưa làm như vậy

Đối tượng MDN. freeze[]
Tutorialspoint Enums
Giá trị giả của JavaScript

Cảm ơn bạn đã đọc. Tôi hy vọng bạn thích bài viết và học được điều gì đó. Nếu bạn tình cờ có bất kỳ phản hồi, phê bình hoặc đóng góp nào, vui lòng ghi lại chúng trong phần bình luận bên dưới

Tại sao enum được sử dụng trong JavaScript?

Enums là một trong số ít các tính năng mà TypeScript có mà không phải là phần mở rộng cấp độ loại của JavaScript. Enums cho phép nhà phát triển xác định một tập hợp các hằng số được đặt tên . Sử dụng enums có thể giúp ghi lại ý định dễ dàng hơn hoặc tạo một tập hợp các trường hợp riêng biệt.

Làm cách nào để nhận các giá trị enum trong JavaScript?

Bảng liệt kê JavaScript .
Nhận tất cả các giá trị enum được phép. Vật. keys[Direction] trả về một mảng ['Up', 'Down', 'Left', 'Right']
Kiểm tra xem một giá trị có bằng giá trị enum không. val === Hướng. Hướng lên
Kiểm tra xem một giá trị có trong enum không. Phương hướng. hasOwnProperty['Up']

JavaScript enums là gì?

Một enum là một "lớp" đặc biệt đại diện cho một nhóm hằng số [biến không thể thay đổi] . Enums có hai hương vị chuỗi và số.

enum trong ví dụ JavaScript là gì?

Enum Sử dụng Đối tượng . Đối tượng có thể có các cặp khóa-giá trị trong đó khóa có thể được coi là giá trị enum và vấn đề có thể là bất kỳ thứ gì. Ví dụ. Hãy sử dụng một đối tượng Javascript để triển khai một enum cho các hướng như bắc, đông, tây và nam .

Chủ Đề