Ép kiểu ẩn trong javascript
Ép buộc loại là một trong những câu hỏi phỏng vấn được hỏi nhiều nhất về JavaScript, hoàn toàn dựa trên khái niệm. Để giải quyết các vấn đề về ép buộc kiểu, người ta phải hiểu các quy tắc và phương pháp ép buộc kiểu trong JavaScript. Có nhiều loại dữ liệu như chuỗi, số, boolean, v.v. Vì vậy, điều rất quan trọng là phải biết cách các loại dữ liệu này bị ép buộc từ loại dữ liệu này sang loại dữ liệu khác. Vui lòng đọc hết bài viết này để hiểu rõ hơn về khái niệm này Show
Phạm vi
Loại ép buộc trong JavaScript là gì?Trước khi hiểu về ép kiểu trong JavaScript, hãy tham khảo ví dụ dưới đây,
Ép buộc tiềm ẩn VS rõ ràng trong JavaScriptép kiểu ngầm định. Từ đồng nghĩa của từ 'ngầm' là 'gián tiếp'. Do đó, như từ gợi ý, ép buộc kiểu ẩn trong JavaScript đề cập đến việc chuyển đổi các giá trị từ một loại dữ liệu sang một loại dữ liệu khác mà không có sự can thiệp của nhà phát triển hoặc ép buộc kiểu xảy ra gián tiếp. Nói một cách đơn giản, chúng ta có thể nói rằng việc ép buộc kiểu ẩn được thực hiện tự động bởi chính javascript ví dụ
Các loại chuyển đổi trong JavaScriptCó ba loại chuyển đổi trong JavaScript có thể được sử dụng để chuyển đổi các giá trị từ một loại dữ liệu này sang một loại dữ liệu khác bằng cách ép buộc kiểu ẩn cũng như rõ ràng. Hành vi của JavaScript trong quá trình ép kiểu là khác nhau đối với nguyên thủy và đối tượng. Do đó, đầu tiên chúng ta sẽ xem các nguyên hàm và sau đó, chúng ta sẽ xem nó cho các đối tượng trong JavaScript thành chuỗiép kiểu ngầm định. Nếu bất kỳ giá trị kiểu dữ liệu chuỗi nào được nối (sử dụng toán tử + số học) với kiểu dữ liệu 'khác', thì kiểu dữ liệu 'khác' đó được chuyển đổi hoàn toàn thành chuỗi. ví dụ
Chuyển đổi chuỗi thành sốNhư chúng ta đã thảo luận ở trên, bất kỳ kiểu dữ liệu nguyên thủy nào cũng có thể được chuyển đổi thành kiểu dữ liệu số bằng cách sử dụng hàm Number() do JavaScript cung cấp. Do đó để chuyển chuỗi sang kiểu dữ liệu số ta có thể sử dụng hàm Number(). Lưu ý rằng hàm Number() chỉ chuyển đổi chuỗi số chứ không chuyển đổi chuỗi chữ cái. Hãy để chúng tôi xem thêm một số ví dụ- 1 Chuyển đổi Boolean sang SốNhư chúng ta đã thảo luận ở trên, bất kỳ kiểu dữ liệu nguyên thủy nào cũng có thể được chuyển đổi thành kiểu dữ liệu số bằng cách sử dụng hàm Number() do JavaScript cung cấp. Do đó để chuyển đổi kiểu dữ liệu boolean sang kiểu số, chúng ta có thể sử dụng hàm Number(). Lưu ý rằng hàm Number() chuyển đổi boolean true thành 1 và boolean false thành 0. Hãy để chúng tôi xem thêm một số ví dụ- 2 Toán Tử Bình Đẳng (==)Toán tử đẳng thức hoặc không nghiêm ngặt cũng dẫn đến ép buộc kiểu ngầm. Nhưng tại sao? . Hãy để chúng tôi xem một số ví dụ- 3 Quy tắc ép buộc kiểu trong JavaScriptTrong Type ép buộc, có hai quy tắc đặc biệt mà bạn phải luôn ghi nhớ -
5 Loại cưỡng chế cho các đối tượngNhư chúng ta đã thấy ép buộc kiểu cho các nguyên hàm ở trên, bây giờ chúng ta sẽ xem xét ép buộc kiểu cho các đối tượng trong JavaScript. Ở đây chúng ta cũng sẽ thấy ba loại chuyển đổi là chuỗi, boolean và số. Đối với cưỡng chế kiểu đối tượng, trước hết giá trị đối tượng được chuyển đổi thành giá trị nguyên thủy và sau đó tiến hành thêm đối với cưỡng chế kiểu. Hãy để chúng tôi xem từng người một Ngay cả đối với các đối tượng, kiểu ép buộc đơn giản và dễ hiểu nhất là kiểu boolean. Tất cả các giá trị không nguyên thủy như đối tượng hoặc mảng được chuyển thành true. Không quan trọng chúng trống hay chứa đầy giá trị, chúng luôn bị ép buộc hoặc chuyển đổi thành true Trước hết, các Đối tượng được chuyển đổi thành nguyên thủy bằng một trong các phương thức nội bộ trong JavaScript đó là [[ToPrimitive]]. Chúng ta hãy xem triển khai giả của phương thức [[ToPrimitive]]- Phương thức [[ToPrimitive]] chấp nhận hai đối số. một giá trị đầu vào và một loại chuyển đổi ưa thích. Số hoặc Chuỗi trong đó Loại ưu tiên có thể được chuyển hoặc cũng có thể tránh được vì đây là đối số tùy chọn. Đối tượng đầu vào có hai phương thức. valueOf() và toString(), được sử dụng để chuyển đổi số cũng như chuỗi. Cả hai đối tượng này đều có sẵn cho bất kỳ loại dẫn xuất nào như Mảng, Ngày, v.v. khi chúng được khai báo trên Đối tượng. nguyên mẫu Thuật toán chuyển đổi hoặc các bước ép kiểu cho các đối tượng là -
Trong quá trình chuyển đổi số, phương thức valueOf() được gọi trước và phương thức toString() được gọi sau nếu cần, trong khi trong quá trình chuyển đổi Chuỗi, trước tiên, lệnh gọi được thực hiện với phương thức toString() và sau đó phương thức valueOf() được gọi . Vì hầu hết các kiểu dựng sẵn trong JavaScript không có phương thức valueOf(), trong quá trình chuyển đổi số cũng như chuỗi, chỉ phương thức toString() mới có thể được gọi Thí dụ 7 Biểu tượng ES6. toPrimitive MethodTính năng ép kiểu mới nhất trong JavaScript là biểu tượng Biểu tượng. toPrimitive, đây là một tính năng ES6 có thể được sử dụng như một phương thức đối tượng. Điểm đặc biệt của phương pháp này là nó cung cấp một giao diện chung để chuyển đổi một đối tượng thành một đối tượng nguyên thủy. Biểu tượng. phương thức toPrimitive có thể ghi đè phương thức toString() và phương thức valueOf(). Điều này đơn giản có nghĩa là Biểu tượng. phương pháp toPrimitive sẽ được xem xét ngay cả khi cả hai phương pháp khác cũng có mặt. Khi ký hiệu. phương thức toPrimitive chạy, nó chấp nhận một đối số gợi ý duy nhất có thể có bất kỳ giá trị nào trong số này. số, chuỗi hoặc mặc định theo tình huống 8 |