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ụ: alert
tự độ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.
Nội dung chính
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"
, null
trở 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 value
thà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 |
null | 0 |
true and false | 1 và 0 |
string | Khoả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 null
và undefined
hành xử khác nhau ở đây: null
trở thành số 0 trong khi undefined
trở 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ànhfalse
. - 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"
làtrue
Một số ngôn ngữ (cụ thể là PHP) coi "0"
là 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 |
---|---|
undefined | NaN |
null | 0 |
true / false . | 1 / 0 |
string | Chuỗ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ác | true |
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à:
undefined
làNaN
một con số, không phải0
."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.