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 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.

Xem Thêm  PHP: Anonymous functions - closure php

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 () 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 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:

Bảng trong Tài liệu EMCAScript Hiển thị Bảng ToNumber

 Bảng trong Tài liệu EMCAScript Hiển thị Bảng ToNumber

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; ! 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:

Bảng trong Tài liệu EMCAScript Hiển thị Giá trị ToBoolean

 Bảng trong Tài liệu EMCAScript Hiển thị Giá trị ToBoolean

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.

: 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ế!

.

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

alt

  • 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 Beginners

    Timestamps

    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

By ads_php