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:

ValueBecomes…
undefinedNaN
null0
true and false1 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 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