Hầu hết thì các toán tử và các function sẽ được chuyển đổi một cách tự động về kiểu giá trị đúng của nó. Đó được gọi là "Sự chuyển đổi kiểu dữ liệu".
Ví dụ, 'alert' sẽ chuyển đổi một cách tự động bất kỳ giá trị nào về string để hiển thị.
Về mặt toán học, các phép toán.. thì giá trị của chúng sẽ tự động được chuyển về dạng number.
Nhưng cũng có trường hợp chúng ta cần phải rõ ràng để đặt giá trị cho đúng.
Note: Ở bài này chúng ta chưa nói về objects, chúng ta sẽ học những thứ nguyên thủy trước. Rồi sau đó, sau khi chúng ta học về object, chúng ta sẽ biết sự chuyển đổi của objects.
ToString
Việc chuyển đổi của string xảy ra khi chúng ta cần cần string từ một giá trị.
Ví dụ, alert(value) dùng để hiển thị ra giá trị của value.
Chúng ta cũng có thể sử dụng gọi đến một function String(value) để làm điều đó:
let value = true;
alert(typeof value); // boolean
value = String(value); // bây giờ giá trị là một string tên là "true"
alert(typeof value); // string
Ví dụ, khi phép chia được áp dụng cho không phải là số:
alert( "6" / "2" ); // 3, string được chuyển đổi thành number
Chúng ta có thể sử dụng function Number(value) để thấy rõ ràng hơn.
let str = "123";
alert(typeof str); // string
let num = Number(str); // trở thành một number 123
alert(typeof num); // number
Nếu string không phải giá trị number hợp lệ, kết quả của việc chuyển đổi đó là NaN:
let age = Number("đây hoàn toàn là một string chứ không phải number");
alert(age); // NaN, conversion failed
Quy tắc của việc chuyển đổi số học như sau:
Value | Becomes… |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 and 0 |
string | Khoảng trắng đầu dòng và cuối dòng sẽ được loại bỏ. Sau đó, nếu các đoạn string còn lại trống, kết quả sẽ là 0. Nếu không thì, số sẽ được đọc từ string. một error thì sẽ trả về NaN |
ví dụ:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error ở "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
Hãy chú ý rằng null và undefined được trả về khác nhau: null trở thành 0, trong khi undefined trở thành NaN.
Note: Thêm dấu '+' nối liền strings
Hầu hết thì các phép toán sẽ chuyển đổi giá trị về number. Nhưng ngoại lệ đáng chú ý là việc thêm vào dấu cộng '+'. Nếu cộng một số với 1 string, hoặc 1 sring với 1 số, thì number còn lại cũng sẽ được chuyển đổi thành string.
Ví dụ:
alert( 1 + '2' ); // '12' string
alert( '1' + 2 ); // '12' string
Điều này chỉ xuất hiện khi một trong 2 đối số là string, Nếu không thì giá trị sẽ được chuyển thành number.
ToBoolean
Việc chuyển đổi boolean là dễ dàng nhất.
Nó xảy ra trong việc thực hiện logic (sau này chúng ta sẽ test các trạng thái khác nhau của chúng), nhưng bây giờ chúng ta cũng có thể thực hiện một cách thủ công với cách gọi hàm Boolean(value).
Quy tắc của việc chuyển đổi như sau:
- Những giá trị có thể thấy như "empty", 0, một string rỗng, null, undefined và NaN trở thành false
- Còn những giá trị còn lại sẽ là true
Ví dụ:
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
Tóm tắt
Hầu hết chúng ta sử dụng những việc chuyển đổi sau: to string, to number, to boolean
Tostring: - xảy ra khi chúng ta đặt thứ gì đó, mà nó có thể biểu diễn với String(value) .
ToNumber: - Xảy ra khi thực hiện các phép toán, có thể biểu diễn với Number(value).
ToBoolean: - Xảy ra khi thực hiện logic, hoặc có thể biểu diễn được với Boolean(value).
Nhiệm vụ
Hãy trả lời kết quả dưới phần comment nha
"" + 1 + 0
"" - 1 + 0
true + false
6 / "3"
"2" * "3"
4 + 5 + "px"
"$" + 4 + 5
"4" - 2
"4px" - 2
7 / 0
" -9\n" + 5
" -9\n" - 5
null + 1
undefined + 1
Bình luận