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 ép kiểu chính mà chúng ta hay sử dụng nhất đó là: ToString, ToNumber và ToBoolean. Bây giờ chúng ta sẽ đi vào chi tiết từng loại nhé.
Xem thêm: Viết code Javascript ngắn gọn với Array Distinct và Short-Circuit Evaluation
Chuyển đổi thành String
Để chuyển đổi nhanh chóng 1 số thành 1 chuỗi string, chúng ta có thể dùng concatenation operator +
theo sau là ngoặc kép “”
.
Ví dụ chuyển đổi number sang string
const val = 3 + "";
console.log(val); // Result: "3"
console.log(typeof val); // Result: "string"
Chuyển đổi thành Boolean
Bên cạnh các giá trị boolean thông thường true
và false
trong, JavaScript cũng xử lý tất cả các value khác như là ‘truthy’ hay ‘falsy’. Nếu chúng đã được xác định thì các value trong JavaScript là ‘truthy’.
Xem thêm: giá trị falsy là gì ?
Chúng ta có thể chuyển đổi dễ dàng giữa true và false bằng cách dùng operator phủ định !
, vốn cũng sẽ chuyển đổi type thành “boolean"
. Loại chuyển đổi type này có thể khá tiện dụng trong xử lý các conditional statement.
Ví dụ chuyển đổi sang boolean
const isTrue = !0;
const isFalse = !1;
const alsoFalse = !!0;
console.log(isTrue); // Result: true
console.log(typeof true); // Result: "boolean"
Chuyển đổi thành Số
Thêm addition operator +
vào trước toán hạng cần chuyển thành số.
Ví dụ chuyển đổi string, boolean sang number.
let int = "10";
int = +int;
console.log(int); // Result: 10
console.log(typeof int); Result: "number"
Cái này cũng có thể được dùng để chuyển các boolean thành số, như bên dưới đây:
console.log(+true); // Return: 1
console.log(+false); // Return: 0
Trường hợp +
sẽ vận hành như 1 concatenation operator hơn là addition operator có thể sẽ xảy ra. Khi đó (và bạn muốn return 1 số nguyên, không phải 1 số thực) bạn có thể sử dụng 2 dấu ngã: ~~
thay vào đó.
1 dấu ngã, được biết như là ‘bitwise NOT operator’, là 1 operator tương đương với -n-1
. Cho nên, ví dụ là ~10
sẽ bằng với -11
.
Sử dụng 2 dấu ngã liên tiếp làm điều hoà hoạt động 1 cách hiệu quả, bởi vì - (-n-1) -1 = n+1 -1 = n
. Nói cách khác, ~-11
bằng 10
.
const int = ~~"10"
console.log(int); // Result: 10
console.log(typeof int); Result: "number"
Cho dù mình không nghĩ trong hầu hết trường hợp sử dụng, bitwise này cũng có thể dùng trên các boolean: ~true = -2
và ~false = -1
.
Quick Float to Integer – Chuyển nhanh số thực thành số nguyên với ‘bitwise OR operator’
Nếu bạn muốn chuyển đổi 1 số thực thành 1 số nguyên, bạn có thể dùng Math.floor()
, Math.ceil()
hay Math.round()
. Nhưng cũng có 1 cách nhanh hơn để chuyển 1 số thực thành 1 số nguyên bằng |
, nó chính là ‘bitwise OR operator’.
console.log(20.9 | 0); // Result: 20
console.log(-20.9 | 0); // Result: -20
Hành vi của |
khá đa dạng dựa trên việc bạn đang làm việc với số dương hay số âm, nên chỉ sử dụng bitwise or operator này khi bạn đã chắc chắn hiểu nó.
- Nếu
n
là dương, n | 0
làm tròn xuống 1 cách hiệu quả.
- Nếu
n
là âm, nó sẽ làm tròn lên hiệu quả.
Để tăng độ chính xác cho nó, operation này gỡ bỏ bất cứ gì đến sau dấu thập phân, cắt số thực thành số nguyên.
Bạn có thể lấy hiệu ứng làm tròn bằng cách dùng ~~
, như ở trên, và thực tế là bất kỳ bitwise operator nào cũng sẽ buộc 1 số thực thành 1 số nguyên.
Xóa các chữ số cuối – Remove Final Digits
‘Bitwise OR operator’ cũng có thể được dùng để xóa số cuối của một số nguyên. Điều này có nghĩa là chúng ta không cần phải dùng code như thế này để chuyển đổi giữa các type:
let str = "1553";
Number(str.substring(0, str.length - 1));
// Thay vào đó, bitwise OR operator cho phép chúng ta viết:
console.log(6553 / 10 | 0) // Result: 655
console.log(6553 / 100 | 0) // Result: 65
console.log(6553 / 1000 | 0) // Result: 6
Xem thêm: Viết code Javascript ngắn gọn với Array Distinct và Short-Circuit Evaluation
Học hành, Lập trình
Javascript, Lập trình
Xem Tiếp