Cách chuyển đổi kiểu dữ liệu trong Javascript

Giới thiệu

Trong JavaScript, các kiểu dữ liệu được sử dụng để phân loại một loại dữ liệu cụ thể, xác định các giá trị mà bạn có thể gán kiểu dữ liệu và các thao tác bạn có thể thực hiện trên đó.

Học Java cơ bản nâng cao cấp tốc 

Mặc dù do ép kiểu dữ liệu, Javascript sẽ tự động chuyển đổi nhiều giá trị, nhưng cách tốt nhất là chuyển đổi thủ công giữa các kiểu dữ liệu để đạt được kết quả mong muốn.

Trong bài hướng dẫn này sẽ chỉ cho bạn chuyển đổi các kiểu dữ liệu nguyên thủy trong Javascript bao gồm: số, chuỗi và kiểu dữ liệu luận lý (Booleans).

Chuyển đổi ngầm định

Là một ngôn ngữ lập trình Javascript chấp nhấn rất nhiều các giá trị không mong muốn,  Do đó, JavaScript sẽ cố gắng chuyển đổi các giá trị không mong muốn này thay vì từ chối chúng hoàn toàn. Chuyển đổi ngầm này được gọi là ép kiểu.

Một số phương thức sẽ chuyển đổi tự động các giá trị để sử dụng chúng. Phương thức alert () lấy một chuỗi làm tham số của nó, nhưng nó sẽ tự động chuyển đổi các kiểu khác thành chuỗi. Vì vậy, chúng ta có thể chuyển một giá trị số thành chuỗi bằng phương thức này.

alert(8.5);

Nếu chúng ta chạy dòng trên, trình duyệt sẽ trả về một hộp thoại thông báo bật lên hiển thị giá trị 8.5 trừ khi nó đã được chuyển thành một chuỗi để làm như vậy.

Khi sử dụng chuỗi có thể được đánh giá thành số với toán tử toán học, bạn sẽ thấy JavaScript có thể xử lý các giá trị bằng cách chuyển đổi hoàn toàn chuỗi thành số, như được minh họa trong ví dụ bên dưới.

// Phép trừ
"15" - "10";
output
5
// phép lấy dư
"15" % "10";
output
5

 Tuy nhiên, không phải mọi toán tử đều hoạt động như mong đợi. Đặc biết là toán tử + nó có thể được hiểu thêm hoặc nối chuỗi lại với nhau.

// Khi làm việc với chuỗi,+ có nghĩa là nối chuỗi
"2" + "3";

 

output
"23"

Toán tử + là đa mục đích, mặc dù "2" và "3" là các chuỗi số nhưng được nối lại thành "23" chứ không phải là "5".

Bởi vì sự mơ hồ có thể tồn tại và đôi khi gây ra các kết quả không mong muốn, nên tốt nhất là chuyển đổi rõ ràng các loại dữ liệu trong mã của bạn càng nhiều càng tốt. Điều này sẽ giúp quản lý đầu vào từ người dùng và xử lý lỗi.

Chuyển đổi giá trị thành chuỗi

Giá trị có thể chuyển đổi thành chuỗi bằng cách gọi String() hoặc n.toString().

Với hàm String(), chúng ta hãy chuyển 1 giá trị Boolean sang 1 chuỗi bằng cách truyền giá trị tham số true  vào trong String().

String(true);

Khi chúng ta làm điều này, giá trị trả về là "true".

output
"true"

Ngoài ra, Chúng ta có thể truyền 1 số vào hàm

String(49);

Một số sẽ được trả về một chuỗi

output
"49"

Bây giờ chúng ta sử dụng  hàm String() với 1 biến. Chúng ta sẽ gán giá trị 1 số vào biến odyssey . Sau đó sử dụng toán tử typeof để kiểm tra kiểu dữ liệu.

let odyssey = 2001;
console.log(typeof odyssey);

 

output
number

Tại thời điểm này, biến odyssey  được gán giá trị số là 2001.

Bây giờ hãy truyền tham số là biến odyssey vào hàm String() và sau đó sử dụng toán tử typeof để kiểm tra kiểu dữ liệu đã được chuyển từ số sang chuỗi hay chưa.

odyssey = String(odyssey);  // "2001"
console.log(typeof odyssey);

 

output
string

Trong ví dụ trên, chúng ta đã chuyển đổi thành công từ số sang chuỗi.

Chúng ta có thể sử dụng n.toString() để chuyển đổi từ số sang chuỗi, chúng ta thay thế n bằng tên biến khác:

let blows = 400;
blows.toString();

Biến blows sẽ trả về 1 chuỗi.

output
"400"

Ngoài ra, chúng ta có thể đặt một giá trị trong ngoặc đơn chứ không phải là một biến với n.toString ():

(1776).toString();          // returns "1776"
(false).toString();         // returns "false"
(100 + 200).toString();     // returns "300"

Bằng cách sử dụng String () hoặc n.toString (), chúng ta có thể chuyển đổi rõ ràng giá trị của các kiểu dữ liệu Boolean hoặc số thành các giá trị chuỗi để đảm bảo rằng code của chúng ta hoạt động như chúng ta dự tính.

Chuyển đổi các giá trị thành số

Khi chuyển đổi giá trị thành loại dữ liệu số, chúng ta sẽ sử dụng phương thức Number(). Chủ yếu, chúng ta sẽ chuyển đổi chuỗi văn bản số thành các số, nhưng chúng ta cũng có thể chuyển đổi các giá trị Boolean.

Chúng ta có thể truyền một chuỗi số vào phương thức Number ():

Number("1984");

Chuỗi sẽ được chuyển đổi thành một số và không còn đính trong dấu ngoặc kép nữa.

output
1984

Chúng ta cũng có thể gán một chuỗi cho một biến và sau đó chuyển đổi nó.

let dalmatians = "101";
Number(dalmatians);

 

output
101

Chuỗi chữ "101" được chuyển đổi thành số 101 thông qua biến số của nó.

Chuỗi các khoảng trắng hoặc các chuỗi rỗng sẽ chuyển thành 0.

Number(" ");    // returns 0
Number("");     // returns 0

Hãy lưu ý rằng các chuỗi không phải là chuỗi số sẽ chuyển thành NaN viết tắt của Not a Number. Điều này bao gồm các số được phân tách bằng dấu cách.

Number("twelve");   // returns NaN
Number("20,000");   // returns NaN
Number("2 3");      // returns NaN
Number("11-11-11"); // returns NaN

Đối với các kiểu dữ liệu Boolean, false sẽ là 0 và true sẽ là 1.

Number(false);      // returns 0
Number(true);       // returns 1

Phương thức Number () chuyển đổi các kiểu dữ liệu không phải số thành các số.

Chuyển đổi các giá trị sang kiểu luận lý (Booleans)

Để chuyển đổi các số hoặc chuỗi thành các giá trị Boolean,chúng ta sử dụng phương thức Boolean (). Điều này có thể hữu ích để xác định xem liệu người dùng đã nhập dữ liệu vào một trường văn bản hay không, ví dụ.

Bất kỳ giá trị nào được hiểu là rỗng, như số 0, một chuỗi rỗng hoặc các giá trị không xác định hoặc NaN hoặc null được chuyển thành false.

Boolean(0);         // returns false
Boolean("");        // returns false
Boolean(undefined); // returns false
Boolean(NaN);       // returns false
Boolean(null);      // returns false

Các giá trị khác sẽ được chuyển thành true, bao gồm cả các chuỗi ký tự bao gồm khoảng trắng.

Boolean(2000);      // returns true
Boolean(" ");       // returns true
Boolean("Maniacs"); // returns true

Lưu ý rằng "0" dưới dạng chuỗi ký tự sẽ chuyển thành true vì nó là giá trị chuỗi không trống:

Boolean("0");   // returns true

Việc chuyển đổi các số và chuỗi thành các giá trị Boolean có thể cho phép chúng ta đánh giá dữ liệu trong các thuật ngữ nhị phân và có thể được tận dụng cho luồng điều khiển trong các chương trình của chúng ta.

Phần kết luận

Hướng dẫn này trình bày cách JavaScript xử lý việc chuyển đổi các kiểu dữ liệu nguyên thủy của nó. Mặc được ép kiểu, các kiểu dữ liệu sẽ chuyển đổi hoàn toàn tự động trong nhiều trường hợp, Chúng ta nên tự chuyển đổi đó là thói quen tốt để chuyển đổi rõ ràng các kiểu dữ liệu để đảm bảo rằng các chương trình hoạt động như mong đợi.

Bài viết được dịch từ trang: http://www.digitalocean.com

Hiểu đơn giản về khái niệm Big O trong lập trình Hiểu đơn giản về khái niệm Big O trong lập trình Quang Nguyen Blog Home Lớp cấu trúc dữ liệu giải thuật C/C++ mở lại cho học sinh cấp 3, sinh viên CNTT năm đầu Lớp cấu trúc dữ liệu giải thuật C/C++ mở lại cho học sinh cấp 3, sinh viên CNTT năm đầu Techmaster team
Lê Chí Linh