Thứ năm, 01/06/2017 | 00:00 GMT+7

Hiểu các loại dữ liệ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ể bằng các ngôn ngữ lập trình. Ví dụ: một số và một chuỗi ký tự là các loại dữ liệu khác nhau sẽ được JavaScript xử lý khác nhau.

Điều này rất quan trọng vì kiểu dữ liệu cụ thể mà bạn sử dụng sẽ xác định những giá trị nào bạn có thể gán cho nó và bạn có thể làm gì với nó. Điều này nghĩa là , để có thể thực hiện các hoạt động với các biến trong JavaScript, điều quan trọng là phải hiểu kiểu dữ liệu của bất kỳ biến nhất định nào.

Trong hướng dẫn này, ta sẽ xem xét cách hoạt động của các kiểu dữ liệu trong JavaScript cũng như các kiểu dữ liệu quan trọng dành cho ngôn ngữ này. Đây không phải là một cuộc điều tra toàn diện về các loại dữ liệu, nhưng sẽ giúp bạn làm quen với các tùy chọn có sẵn cho bạn trong JavaScript.

Nhập động

JavaScript có các kiểu dữ liệu động, nghĩa là việc kiểm tra kiểu được thực hiện trong thời gian chạy thay vì thời gian biên dịch. Các kiểu dữ liệu của Python cũng được nhập động.

Với các ngôn ngữ được nhập động, một biến cùng tên được dùng để chứa các kiểu dữ liệu khác nhau.

Ví dụ: biến t , được định nghĩa là một biến bởi từ khóa let ( lưu ý let giữ cho một biến nhất định bị giới hạn trong phạm vi), có thể được gán để chứa các kiểu dữ liệu khác nhau hoặc có thể được khởi tạo nhưng không được xác định:

let t = 16;         // t is a number let t = "Teresa";   // t is a string let t = true;       // t is a Boolean let t;              // t is undefined 

Mỗi biến t ở trên có thể được đặt thành bất kỳ kiểu dữ liệu nào có sẵn trong JavaScript; chúng không cần phải được khai báo rõ ràng với một kiểu dữ liệu trước khi chúng được sử dụng.

Số

JavaScript chỉ có một loại số, không có ký hiệu riêng cho số nguyên và số dấu phẩy động. Do đó, các số có thể được viết bằng JavaScript có hoặc không có số thập phân:

let num1 = 93; let num2 = 93.00; 

Trong cả hai trường hợp trên, kiểu dữ liệu là một số và giống nhau dù số đó có dấu thập phân hay không.

Ký hiệu hàm mũ khoa học được dùng trong JavaScript để viết tắt các số rất lớn hoặc nhỏ, như trong các ví dụ sau:

let num3 = 987e8;       // 98700000000 let num4 = 987e-8;      // 0.00000987 

Các số trong JavaScript được coi là chính xác đến 15 chữ số. Điều đó nghĩa là các số sẽ được làm tròn sau khi đạt đến chữ số 16:

let num5 = 999999999999999;     // remains as 999999999999999 let num6 = 9999999999999999;    // rounded up to 10000000000000000 

Ngoài việc đại diện cho các con số, kiểu số trong JavaScript cũng có sẵn ba giá trị tượng trưng:

  • Infinity - một giá trị số đại diện cho một số dương tiến tới vô cực
  • -Infinity - một giá trị số đại diện cho một số âm tiến đến vô cùng
  • NaN - một giá trị số đại diện cho một số không phải là số, viết tắt của n ot a n umber

Infinity hoặc -Infinity sẽ được trả về nếu bạn tính một số nằm ngoài số lớn nhất có thể có trong JavaScript. Những điều này cũng sẽ xảy ra đối với các giá trị không được xác định, như khi chia cho 0:

let num7 = 5 / 0;   // will return Infinity let num8 = -5 / 0;  // will return -Infinity 

Về mặt kỹ thuật, Infinity sẽ được hiển thị khi một số vượt quá số 1.797693134862315E+308 , đại diện cho giới hạn trên trong JavaScript.

Tương tự, -Infinity sẽ được hiển thị khi một số vượt quá giới hạn dưới -1.797693134862316E+308 .

Số Infinity cũng được dùng trong các vòng lặp:

while (num9 != Infinity) {      // Code here will execute through num9 = Infinity } 

Đối với các số không phải là số hợp lệ , NaN sẽ được hiển thị. Nếu bạn cố gắng thực hiện một phép toán trên một số và một giá trị không phải là số, NaN sẽ được trả về. Đây là trường hợp trong ví dụ sau:

let x = 20 / "Shark";   // x will be NaN 

Vì số 20 không thể chia cho chuỗi "Shark" vì nó không thể được đánh giá là một số, nên giá trị trả về cho biến xNaN .

Tuy nhiên, nếu một chuỗi có thể được đánh giá là một giá trị số, thì biểu thức toán học có thể được thực hiện trong JavaScript:

let y = 20 / "5";   // y will be 4 

Trong ví dụ trên, vì chuỗi "5" có thể được đánh giá là một giá trị số trong JavaScript, nó được coi như vậy và sẽ hoạt động với toán tử toán học cho phép chia, / .

Khi gán giá trị NaN cho một biến được sử dụng trong một phép toán, nó sẽ dẫn đến giá trị của NaN , ngay cả khi toán hạng khác là một số hợp lệ :

let a = NaN; let b = 37; let c = a + b;  // c will be NaN 

Chỉ có một kiểu dữ liệu số trong JavaScript. Khi làm việc với các số, bất kỳ số nào bạn nhập vào sẽ được hiểu là kiểu dữ liệu cho các số; bạn không bắt buộc phải khai báo loại dữ liệu bạn đang nhập vì JavaScript được nhập động.

Dây

Chuỗi là một chuỗi gồm một hoặc nhiều ký tự (chữ cái, số, ký hiệu). Các chuỗi hữu ích ở chỗ chúng đại diện cho dữ liệu dạng văn bản.

Trong JavaScript, các chuỗi tồn tại trong dấu ngoặc kép ' hoặc dấu ngoặc kép " , do đó, để tạo một chuỗi, hãy đặt một chuỗi ký tự trong dấu ngoặc kép:

let singleQuotes = 'This is a string in single quotes.'; 
let doubleQuotes = "This is a string in double quotes."; 

Bạn có thể chọn sử dụng dấu ngoặc kép đơn hoặc dấu ngoặc kép, nhưng tùy theo điều kiện nào bạn quyết định, bạn nên duy trì nhất quán trong một chương trình.

Chương trình "Hello, World!" chứng minh cách một chuỗi được dùng trong lập trình máy tính, như các ký tự tạo nên cụm từ Hello, World! trong alert() bên dưới là một chuỗi.

hello.html
<!DOCTYPE HTML> <html> <head> <script> function helloFunction() {     alert("Hello, World!"); } </script> </head> <body> <p><button onclick="helloFunction()">Click me</button></p> </body> </html> 

Khi ta chạy mã và nhấp vào nút Click me , ta sẽ nhận được một cửa sổ bật lên với kết quả sau:

Output
Hello, World!

Như với các kiểu dữ liệu khác, ta có thể lưu trữ các chuỗi trong các biến:

let hw = "Hello, World!"; 

Và hiển thị chuỗi trong alert() bằng cách gọi biến:

hello.html
... <script> let hw = "Hello, World!"; function helloFunction() {     alert(hw); } </script> ... 
Output
Hello, World!

Có nhiều thao tác mà ta có thể thực hiện trên các chuỗi trong chương trình của bạn để thao tác chúng nhằm đạt được kết quả mà ta đang tìm kiếm. Các chuỗi rất quan trọng để truyền đạt thông tin cho user và để user truyền thông tin trở lại chương trình.

Booleans

Kiểu dữ liệu Boolean có thể là một trong hai giá trị, đúng hoặc sai . Boolean được sử dụng để biểu diễn các giá trị chân lý được liên kết với nhánh logic của toán học, thông báo cho các thuật toán trong repository a học máy tính.

Khi nào bạn nhìn thấy kiểu dữ liệu Boolean, nó sẽ bắt đầu bằng chữ B viết hoa vì nó được đặt tên cho nhà toán học George Boole.

Nhiều phép toán trong toán học cho ta câu trả lời đánh giá đúng hoặc sai:

  • lớn hơn
    • 500> 100 true
    • 1> 5 false
  • ít hơn
    • 200 <400 true
    • 4 <2 false
  • công bằng
    • 5 = 5 true
    • 500 = 400 false

Giống như với các kiểu dữ liệu khác, ta có thể lưu trữ giá trị Boolean trong một biến:

let myBool = 5 > 8; // false 

Vì 5 không lớn hơn 8 nên biến myBool có giá trị là false .

Khi bạn viết nhiều chương trình hơn bằng JavaScript, bạn sẽ trở nên quen thuộc hơn với cách hoạt động của Booleans và cách các hàm và hoạt động khác nhau đánh giá thành true hoặc false có thể thay đổi quá trình của chương trình.

Mảng

Một mảng có thể chứa nhiều giá trị trong một biến duy nhất. Điều này nghĩa là bạn có thể chứa một danh sách các giá trị trong một mảng và lặp qua chúng.

Mỗi mục hoặc giá trị nằm bên trong một mảng được gọi là một phần tử . Bạn có thể tham chiếu đến các phần tử của mảng bằng cách sử dụng số index .

Cũng giống như các chuỗi được định nghĩa là các ký tự giữa các dấu ngoặc kép, mảng được xác định bằng cách có các giá trị giữa các dấu ngoặc vuông [ ] .

Ví dụ: một mảng các chuỗi trông như thế này:

let fish = ["shark", "cuttlefish", "clownfish", "eel"]; 

Nếu ta gọi biến fish , ta sẽ nhận được kết quả sau:

["shark", "cuttlefish", "clownfish", "eel"] 

Mảng là một kiểu dữ liệu rất linh hoạt vì chúng có thể thay đổi được trong đó chúng có thể có các giá trị phần tử được thêm vào, loại bỏ và thay đổi.

Các đối tượng

Kiểu dữ liệu đối tượng JavaScript có thể chứa nhiều giá trị dưới dạng các cặp tên: giá trị . Các cặp này cung cấp một cách hữu ích để lưu trữ và truy cập dữ liệu. Cú pháp chữ của đối tượng được tạo thành từ các cặp name: value được phân tách bằng dấu hai chấm với dấu ngoặc nhọn ở hai bên { } .

Thường được sử dụng để giữ dữ liệu có liên quan, chẳng hạn như thông tin có trong ID, một đối tượng JavaScript theo nghĩa đen trông như thế này, với khoảng trắng giữa các thuộc tính:

let sammy = {firstName:"Sammy", lastName:"Shark", color:"blue", location:"ocean"}; 

Ngoài ra, và đặc biệt là đối với các ký tự đối tượng có nhiều cặp tên: giá trị, ta có thể viết kiểu dữ liệu này trên nhiều dòng, với khoảng trắng sau mỗi dấu hai chấm:

let sammy = {     firstName: "Sammy",     lastName: "Shark",     color: "blue",     location: "Ocean" };  

Biến đối tượng sammy trong mỗi ví dụ trên có 4 thuộc tính: firstName , lastName , colorlocation . Đây là mỗi giá trị được truyền được phân tách bằng dấu hai chấm.

Làm việc với nhiều loại dữ liệu

Mặc dù mỗi chương trình bạn tạo sẽ chứa nhiều kiểu dữ liệu, nhưng điều quan trọng cần lưu ý là bạn thường sẽ thực hiện các thao tác trong cùng một kiểu dữ liệu. Đó là, bạn sẽ thực hiện toán học trên các số hoặc cắt các chuỗi.

Khi bạn sử dụng toán tử hoạt động trên các kiểu dữ liệu, chẳng hạn như toán tử + có thể thêm số hoặc nối chuỗi, bạn có thể đạt được kết quả không mong đợi.

Ví dụ: khi sử dụng toán tử + với các số và chuỗi cùng nhau, các số sẽ được coi là một chuỗi (do đó chúng sẽ được nối với nhau), nhưng thứ tự của các kiểu dữ liệu sẽ ảnh hưởng đến việc nối.

Vì vậy, nếu bạn tạo một biến thực hiện nối sau, JavaScript sẽ diễn giải mỗi phần tử bên dưới thành một chuỗi:

let o = "Ocean" + 5 + 3; 

Nếu bạn gọi biến o , bạn sẽ nhận được giá trị sau được trả về:

Output
Ocean53

Tuy nhiên, nếu bạn dẫn đầu bằng số, hai số sẽ được thêm vào trước khi chúng được hiểu là một chuỗi khi thời gian chạy chương trình đến "Ocean" , vì vậy giá trị trả về sẽ là tổng của hai số được nối với chuỗi:

let p = 5 + 3 + "Ocean"; 
Output
8Ocean

Do những kết quả không mong muốn này, bạn có thể sẽ thực hiện các hoạt động và phương pháp trong một loại dữ liệu thay vì trên chúng. Tuy nhiên, JavaScript không trả về lỗi khi trộn các kiểu dữ liệu như một số ngôn ngữ lập trình khác.

Kết luận

Đến đây, bạn sẽ hiểu rõ hơn về một số kiểu dữ liệu chính có sẵn để bạn sử dụng trong JavaScript.

Mỗi kiểu dữ liệu này sẽ trở nên quan trọng khi bạn phát triển các dự án lập trình bằng ngôn ngữ JavaScript.


Tags:

Các tin liên quan

Phương thức chuỗi padStart và padEnd trong JavaScript
2017-02-17
Các chữ mẫu được gắn thẻ trong JavaScript (ES6 / ES2015)
2017-02-07
Bắt đầu với Trực quan hóa Dữ liệu Sử dụng JavaScript và Thư viện D3
2016-12-28
Bắt đầu với Trực quan hóa Dữ liệu Sử dụng JavaScript và Thư viện D3
2016-12-28
Cách làm việc với JSON trong JavaScript
2016-12-09
Cấu trúc đối tượng và mảng trong JavaScript với ES6
2016-12-09
Một trang đơn giản mờ dần với JavaScript
2016-11-29
Truy cập các phần tử trong JavaScript với querySelector và querySelectorAll
2016-11-29
Let và Const trong JavaScript với ES6 / ES2015
2016-11-10
Chức năng của Trình tạo trong JavaScript với ES6 / ES2015
2016-11-07