Mặc dù JavaScript dễ dàng cho người mới bắt đầu, nhưng hãy tìm hiểu cách ép buộc gõ trong JavaScript có thể khó khăn như thế nào và cách giải quyết vấn đề đó.
Bạn đang xem : j bắt buộc thành chuỗi
Kiểu ép buộc, chuyển đổi kiểu, sắp chữ và kiểu tung hứng: tất cả các tên khác nhau đề cập đến quá trình chuyển đổi một kiểu dữ liệu này thành một kiểu dữ liệu khác. Quá trình này có ở hầu hết mọi ngôn ngữ lập trình và là một khái niệm quan trọng trong khoa học máy tính.
Mặc dù JavaScript được biết đến là một trong những ngôn ngữ lập trình dễ dàng nhất cho người mới bắt đầu, nhưng nó cũng có thể trở nên khó chịu khi các nhà phát triển mong đợi JavaScript làm một việc và nó trả về một thứ khác.
Và mặc dù tiêu chuẩn Đặc tả ngôn ngữ ECMAScript có sẵn cho các nhà phát triển để giúp hướng dẫn họ vượt qua những vấn đề này, nhưng việc không đọc và hiểu tiêu chuẩn đặc tả có thể gây ra nhiều thất vọng hơn khi xử lý kiểu ép buộc trong JavaScript.
Nhập cưỡng chế trong JavaScript là một ví dụ về cách ngôn ngữ này có thể tạo ra kết quả không mong đợi khi chúng tôi không biết chính xác cách hoạt động của nó. Tất cả những ai đã chạm vào dù chỉ một chút mã trong JavaScript đều có thể liên tưởng rằng việc cưỡng chế kiểu có thể rất phức tạp.
Mặc dù các ví dụ mã mà chúng tôi đề cập trong bài viết này có vẻ giống như các lỗi mà bản cập nhật phiên bản có thể khắc phục, nhưng lý do chúng tôi xem xét tại sao kiểu ép buộc hoạt động theo cách nó thực hiện là vì nhiều sản phẩm và mã kế thừa phụ thuộc vào các phiên bản JavaScript cũ hơn. < / p>
Điều này có nghĩa là việc tạo ra các thay đổi đối với ngôn ngữ có thể phá vỡ các sản phẩm và mã kế thừa và thay vào đó, chúng ta phải học cách điều hướng các loại cưỡng chế kỳ quặc.
Trong bài đăng này, chúng tôi sẽ đề cập đến các loại trong JavaScript và cách sử dụng tính năng ép buộc loại, giúp chúng tôi đạt được thành công trong lập trình.
Các loại trong JavaScript
Chúng tôi có thể coi JavaScript là ngôn ngữ không định kiểu , có nghĩa là nó không có kiểu tĩnh. Tuy nhiên, lầm tưởng nổi bật rằng JavaScript không có các loại là sai.
JavaScript có bảy kiểu nguyên thủy :
-
string
-
số
-
Boolean
-
không xác định
-
null
-
Ký hiệu
-
BigInt
Tuy nhiên, các biến trong JavaScript không có loại. Bất cứ khi nào chúng ta sử dụng toán tử typeof
để trả về kiểu biến, chúng ta sẽ trả về kiểu giá trị của biến.
Bây giờ chúng ta đã xóa một vài quan niệm sai lầm về JavaScript và loại, chúng ta có thể tìm hiểu tìm hiểu thêm về cưỡng chế nhập và cách hoạt động của nó trong JavaScript.
Loại cưỡng chế
Nhập cưỡng chế trong JavaScript chỉ cưỡng chế các kiểu nguyên thủy string
, number
và Boolean
. Trong JavaScript không có cách nào để ép buộc một loại giá trị thành object
hoặc function
.
JavaScript có hai hình thức cưỡng chế đặc trưng: ép buộc ngầm và ép buộc rõ ràng.
Ép buộc ngầm xảy ra khi JavaScript ép buộc loại giá trị thành loại mong đợi. Kiểu ép buộc này xảy ra mà nhà phát triển không nhận thấy.
Sự ép buộc rõ ràng xảy ra khi chúng tôi muốn ép buộc loại giá trị thành một loại cụ thể. Hầu hết thời gian, sự ép buộc rõ ràng trong JavaScript xảy ra bằng cách sử dụng các hàm tích hợp sẵn như String ()
, Number ()
và Boolean ()
.
Khi chúng tôi cố gắng tạo các hoạt động trong JavaScript bằng cách sử dụng các loại giá trị khác nhau, JavaScript sẽ ép buộc các loại giá trị cho chúng tôi một cách ngầm định.
Đây là một trong những lý do tại sao các nhà phát triển có xu hướng tránh sự ép buộc ngầm trong JavaScript. Hầu hết thời gian, chúng tôi nhận được kết quả không mong muốn từ hoạt động này nếu chúng tôi không biết chính xác cách JavaScript cưỡng chế các loại giá trị.
Sự ép buộc ngầm không tệ như các nhà phát triển có xu hướng nghĩ và trên thực tế, rất hữu ích để viết mã có thể đọc được nhưng hiệu quả. Chìa khóa để hiểu đúng cách hoạt động của tính năng ép buộc ngầm trong JavaScript là hiểu những gì nó đang làm.
Số
Có nhiều cách khả thi để ép kiểu nguyên thủy thành một số. Hàm Number ()
ép kiểu giá trị được chuyển đến hàm, sau đó chuyển sang một số. Khi một loại không thể bị ép buộc thành một số, kết quả trả về là NaN
.
Hãy xem một vài ví dụ về sự ép buộc rõ ràng bằng cách sử dụng hàm Number ()
:
Number ("42"); // 42 Con số(""); // 0 Số (đúng); // 1 Số (sai); // 0 Số (null); // 0 Số (không xác định); // NaN
Chúng ta có thể thấy rõ một số kết quả rõ ràng và bất ngờ. Chuyển đổi null
thành một số trả về 0
trong khi chuyển đổi undefined
thành một số trả về NaN
. Cả hai thao tác phải trả về NaN
vì cả hai loại giá trị rõ ràng không phải là số hợp lệ.
Chuyển đổi một chuỗi rỗng thành một số sẽ trả về 0
. Đây là một phần kỳ lạ khác của JavaScript vì loại giá trị này rõ ràng không phải là một số hợp lệ nhưng nó vẫn chuyển đổi thành 0
.
Kyle Simpson , tác giả của bộ sách Bạn chưa biết JS , cho biết, “Chuỗi trống trở thành 0 là căn nguyên của mọi tệ nạn ép buộc.” < / p>
Mặc dù kết quả mà chúng tôi nhận được từ hàm Number ()
có vẻ không như mong đợi, nhưng thông số kỹ thuật ECMAScript rõ ràng chỉ ra những khác biệt này. Nhưng nếu không đọc đặc tả ECMA, các nhà phát triển có thể không nhận ra đây chỉ là cách JavaScript được viết.
Trong ví dụ đầu tiên của chúng tôi, chúng tôi nhận được các kết quả khác nhau cho null
và không xác định
. Hàm đặc tả ECMAScript Number ()
với kiểu giá trị null, nó sẽ trả về 0
và bất cứ khi nào chúng ta sử dụng cùng một hàm với undefined < / code> nó trả về
NaN
.
ToNumber
là tên chuyển đổi kiểu mà đặc tả ECMAScript sử dụng khi đề cập đến một hoạt động trong đó một giá trị chuyển đổi thành một số. Number ()
là một đối tượng trình bao bọc nguyên thủy trong JavaScript có chức năng chuyển đổi một giá trị thành một số. Điều này cũng tương tự với ToBoolean
mà chúng tôi sẽ đề cập sau.
Dưới đây là danh sách các đối số và kết quả mà phép toán ToNumber
chuyển đổi chúng thành:
Trong ví dụ khác của chúng tôi, chúng tôi đã sử dụng hàm Number ()
với một chuỗi trống và nhận được một 0
. Đây cũng là điều rõ ràng trong đặc tả ECMAScript:
Một
StringNumericLiteral
trống hoặc chỉ chứa khoảng trắng được chuyển đổi thành +0. - Đặc tả ngôn ngữ ECMAScript 2015
Chuỗi
Để ép buộc một cách rõ ràng một giá trị vào một chuỗi trong JavaScript, chúng ta có thể sử dụng hàm String ()
. Để ép buộc ngầm một giá trị vào một chuỗi, chúng ta có thể sử dụng toán tử +
với bất kỳ toán hạng nào là một chuỗi.
Các kiểu nguyên thủy chuyển đổi thành chuỗi như mong đợi:
String ("42"); // "42"
Chuỗi (true); // "thật"
Chuỗi (sai); // "sai"
Chuỗi (null); // "vô giá trị"
Chuỗi (không xác định); // "chưa xác định"
Chúng ta nên cẩn thận khi sử dụng kiểu cưỡng chế khi chúng ta muốn tạo một phép toán và một trong các loại toán hạng của chúng ta là một chuỗi.
JavaScript trả về hoạt động của chúng tôi dưới dạng một chuỗi khi cách xử lý đúng hoạt động sẽ gặp lỗi vì không có cách nào để thực hiện một phép toán bằng một số và một chuỗi không phải là một số hợp lệ:
10 + "10" // "1010" 20 + "200" // "20200" 0,212 + "1" // "0,2121"
Boolean
Để ép buộc một cách rõ ràng một giá trị thành Boolean trong JavaScript, chúng ta có thể sử dụng hàm Boolean ()
. Để hoàn toàn ép buộc một giá trị thành Boolean, chúng ta có thể sử dụng các toán tử logic, chẳng hạn như ||
, & amp; & amp;
và !
theo logic bối cảnh.
Đặc tả của hàm Boolean ()
rất rõ ràng và hữu ích. Chúng ta có thể thấy rõ kết quả mình nhận được tùy thuộc vào loại giá trị mà chúng ta vượt qua:
Danh sách các giá trị sai rất dễ nhớ. Mọi thứ không có trong danh sách đều là giá trị trung thực:
Boolean ('') // sai Boolean (0) // sai Boolean (-0) // sai Boolean (NaN) // sai Boolean (null) // sai Boolean (không xác định) // false Boolean (false) // sai
Như đã nêu trước đây, các toán tử logic cũng ép buộc một loại giá trị thành Boolean:
đúng & amp; & amp; false // sai đúng & amp; & amp; đúng rồi sự thật || sai đúng sự thật || !sai đúng "tên" || 0 // "tên" "tên" || [] // "Tên" "" || [1, 2, 3] // [1, 2, 3]
Kết luận
Loại cưỡng chế là một khái niệm JavaScript cốt lõi được sử dụng trên mọi ứng dụng, API và dịch vụ sử dụng JavaScript.
Nói chung, trừ khi bạn theo đuổi sự ép buộc rõ ràng, JavaScript sẽ cưỡng chế ngầm tùy thuộc vào các loại giá trị và hoạt động được sử dụng. Nhưng bất kể sử dụng kiểu ép buộc ngầm hay rõ ràng, nó cung cấp cho nhà phát triển sự linh hoạt và giúp mã dễ đọc hơn.
Tổng quan ngắn này cung cấp kiến thức cơ bản để hiểu về cưỡng chế kiểu, tuy nhiên, việc đọc thông số kỹ thuật ECMAScript có thể cung cấp đánh giá sâu hơn về khái niệm để hiểu tại sao lại xảy ra kết quả cưỡng chế kiểu không mong muốn.
LogRocket : Gỡ lỗi JavaScript dễ dàng hơn bằng cách hiểu ngữ cảnh
Gỡ lỗi mã luôn là một công việc tẻ nhạt. Nhưng bạn càng hiểu nhiều lỗi của mình thì bạn càng dễ sửa chúng hơn.
LogRocket cho phép bạn hiểu những lỗi này theo những cách mới và độc đáo. Giải pháp giám sát giao diện người dùng của chúng tôi theo dõi mức độ tương tác của người dùng với giao diện người dùng JavaScript của bạn để cung cấp cho bạn khả năng tìm ra chính xác những gì người dùng đã làm dẫn đến lỗi.
LogRocket ghi lại nhật ký bảng điều khiển, thời gian tải trang, tốc độ xếp chồng, yêu cầu / phản hồi mạng chậm với tiêu đề + nội dung, siêu dữ liệu trình duyệt và nhật ký tùy chỉnh. Hiểu tác động của mã JavaScript của bạn sẽ không bao giờ dễ dàng hơn thế!
Dùng thử miễn phí .
Chia sẻ cái này:
Xem thêm những thông tin liên quan đến chủ đề js ép buộc vào chuỗi
JavaScript Crash Course 2022 - Tutorial for Complete Beginners
- Tác giả: Codevolution
- Ngày đăng: 2022-02-05
- Đánh giá: 4 ⭐ ( 6249 lượt đánh giá )
- Khớp với kết quả tìm kiếm: 📘 Courses - https://learn.codevolution.dev/
💖 Support UPI - https://support.codevolution.dev/
💖 Support PayPal - https://www.paypal.me/Codevolution
💾 Github - https://github.com/gopinav⚡️ Checkout Taskade! https://www.taskade.com/
To upgrade any workspace, login and visit https://www.taskade.com/billing
Use coupon code: CodevolutionYoutube for any workspace upgrade. Select "Add promo code" on checkout, enter the code, then hit "Apply". This will apply a 100% one year subscription discount. Enjoy and feel free to invite others to your workspace!📱 Follow Codevolution
+ Twitter - https://twitter.com/CodevolutionWeb
+ Facebook - https://www.facebook.com/codevolutionweb📫 Business - codevolution.business@gmail.com
JavaScript Crash Course
JavaScript Tutorial for Beginners
JavaScript Crash Course 2022 - Tutorial for Complete BeginnersTimestamps
00:00 Intro
00:27 Before we begin
02:12 What is JavaScript?
05:14 Setup
07:30 How to run JavaScript
13:55 Adding comments
14:47 Variables
18:38 Data types
28:28 Operators
37:54 Type Conversions
45:44 Equality
49:26 Conditional statements
57:47 Looping code
01:08:07 Functions
01:16:17 Scope
Cách Ép kiểu String, Number, Boolean trong Javascript
- Tác giả: shareeverythings.com
- Đánh giá: 4 ⭐ ( 9025 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Cách Ép kiểu String, Number, Boolean trong Javascript - Type Conversion Trong bài viết này mình sẽ hướng dẫn các bạn cách ép kiểu trong JavaScript . Có 3 loại
Chuỗi (String) Trong JavaScript
- Tác giả: www.codehub.com.vn
- Đánh giá: 5 ⭐ ( 7783 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Một chuỗi JavaScript bao gồm không hoặc nhiều ký tự được viết trong cặp dấu nháy.
Xử lý chuỗi (string) trong Javascript
- Tác giả: mylop.edu.vn
- Đánh giá: 3 ⭐ ( 2200 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Trong bài này chúng ta sẽ tìm hiểu về chuỗi string trong Javascript, qua đó bạn sẽ biết được cách tạo và nối chuỗi cũng như ép kiểu dữ liệu sang chuỗi.
Chuỗi (String) trong JavaScript
- Tác giả: viettuts.vn
- Đánh giá: 5 ⭐ ( 2273 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Chuỗi (String) trong JavaScript là một đối tượng đại diện cho một chuỗi ký tự. Có 2 cách để tạo chuỗi trong JavaScript:Theo chuỗi chữ. Theo đối tượng String
Các hàm xử lý chuỗi trong Javascript
- Tác giả: toidicode.com
- Đánh giá: 3 ⭐ ( 8627 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Chuỗi - String là một thứ không thể thiếu trong một ngôn ngữ và đi kèm theo nó là hàng loạt các hàm xử lý chuỗi sẵn có, rất hữu dụng. Và đương nhiên trong javascript cũng thế.
Ép kiểu trong JavaScript
- Tác giả: hocjavascript.net
- Đánh giá: 3 ⭐ ( 7133 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Quá trình chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác được gọi là chuyển đổi kiểu hay ép kiểu. Có hai loại ép kiểu trong JavaScript.
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình