Hầu hết thời gian, các toán tử và hàm tự động chuyển đổi các giá trị được cung cấp cho chúng thành đúng kiểu.

Ví dụ: alerttự động chuyển đổi bất kỳ giá trị nào thành một chuỗi để hiển thị nó. Các phép toán chuyển đổi giá trị thành số.

Cũng có trường hợp khi chúng ta cần chuyển đổi rõ ràng một giá trị thành kiểu dự kiến.

Chưa nói về các Object

Trong chương này, chúng ta sẽ không bao gồm các đối tượng. Bây giờ chúng ta sẽ chỉ nói về kiểu nguyên thủy.

Sau này, sau khi chúng ta tìm hiểu về các đối tượng, trong chương chuyển đổi Đối tượng thành nguyên thủy, chúng ta sẽ thấy các đối tượng được chuyển đổi phù hợp như thế nào.

1. Chuyển đổi chuỗi

Chuyển đổi chuỗi xảy ra khi chúng ta cần dạng chuỗi của một giá trị nào đó.

Ví dụ, alert(value)nó để hiển thị giá trị chuỗi của value.

Chúng ta cũng có thể gọi hàmString(value) để chuyển đổi một giá trị thành một chuỗi:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

let value = true;
alert(typeof value); // boolean

value = String(value); // now value is a string "true"
alert(typeof value); // string

Chuyển đổi chuỗi rất rõ ràng. false được chuyển đổi trở thành "false", nulltrở thành "null", v.v.

2. Chuyển đổi số

Chuyển đổi số xảy ra trong các hàm và biểu thức toán học tự động.

Ví dụ: khi chia /được áp dụng cho các số:

alert( "6" / "2" ); // 3, strings are converted to numbers

Chúng ta có thể sử dụng Number(value)hàm để chuyển đổi một cách rõ ràng valuethành một số:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

let str = "123";
alert(typeof str); // string

let num = Number(str); // becomes a number 123

alert(typeof num); // number

Chuyển đổi rõ ràng thường được yêu cầu khi chúng ta đọc một giá trị từ nguồn dựa trên chuỗi như một dạng văn bản nhưng chúng ta mong muốn một số được nhập.

Nếu chuỗi không phải là số hợp lệ, kết quả của chuyển đổi đó là NaN. Ví dụ:

let age = Number("an arbitrary string instead of a number");

alert(age); // NaN, conversion failed

Quy tắc chuyển đổi số:

Giá trị. Giá trị được chuyển đối
undefined NaN
null0
true and false 10
stringKhoảng trắng từ đầu và cuối được loại bỏ. Nếu chuỗi còn lại trống, kết quả là 0. Nếu không, số đó là số đọc từ chuỗi. Hoặc ột lỗi cho NaN.

Ví dụ:

alert( Number("   123   ") ); // 123
alert( Number("123z") );      // NaN (error reading a number at "z")
alert( Number(true) );        // 1
alert( Number(false) );       // 0

Xin lưu ý rằng nullundefinedhành xử khác nhau ở đây: nulltrở thành số 0 trong khi undefinedtrở thành NaN.

Hầu hết các toán tử toán học cũng thực hiện chuyển đổi như vậy, chúng ta sẽ thấy điều đó trong chương tiếp theo.

3. Chuyển đổi Boolean

Chuyển đổi kiểu Boolean là đơn giản nhất.

Nó xảy ra trong các hoạt động logic (sau này chúng ta sẽ gặp các bài kiểm tra điều kiện và những thứ tương tự khác) nhưng cũng có thể được thực hiện rõ ràng bằng một cuộc gọi đến Boolean(value).

Quy tắc chuyển đổi:

  • Giá trị mà là “trống rỗng”, giống như 0, một chuỗi rỗng, null, undefined, và NaN sẽ được chuyển đổi trở thành false.
  • Các giá trị khác trở thành true.

Ví dụ:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

alert( Boolean(1) ); // true
alert( Boolean(0) ); // false

alert( Boolean("hello") ); // true
alert( Boolean("") ); // false

Xin lưu ý: chuỗi có số 0 "0"true

Một số ngôn ngữ (cụ thể là PHP) coi "0"false. Nhưng trong JavaScript, một chuỗi không trống luôn luôn true.

alert( Boolean("0") ); // true
alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)

4. Tóm lược

Ba chuyển đổi loại được sử dụng rộng rãi nhất là chuỗi, số và boolean.

String Conversion– Xảy ra khi chúng ta xuất ra một cái gì đó. Có thể được thực hiện với String(value). Việc chuyển đổi thành chuỗi thường rõ ràng đối với các giá trị nguyên thủy.

Numeric Conversion– Xảy ra trong các phép toán. Có thể được thực hiện với Number(value).

Việc chuyển đổi tuân theo các quy tắc:

Giá trịGiá trị trở thành
undefinedNaN
null0
true / false. 1 / 0
stringChuỗi được đọc là như là một vùng, các khoảng trắng từ cả hai phía bị bỏ qua. Một chuỗi rỗng trở thành 0. Có lỗi sẽ cho raNaN.

Boolean Conversion– Xảy ra trong các hoạt động hợp lý. Có thể được thực hiện với Boolean(value).

Theo các quy tắc:

Giá trịTrở thành đào
0, null, undefined, NaN,""false
bất kỳ giá trị nào kháctrue

Hầu hết các quy tắc này là dễ hiểu và ghi nhớ. Các ngoại lệ đáng chú ý mọi người thường mắc lỗi là:

  • undefinedNaNmột con số, không phải 0.
  • "0"và các chuỗi chỉ không gian như " "là true khi chuyển đổi ra một boolean.

Đối tượng không được nói ở đây. Chúng ta sẽ trở lại với chúng sau này trong chương chuyển đổi Đối tượng thành kiểu nguyên thủy dành riêng cho các đối tượng sau khi chúng ta tìm hiểu những điều cơ bản của JavaScript.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!