1. Kiểu dữ liệu trong JavaScript là gì?

1.1. Khái niệm về kiểu dữ liệu

Trong dữ liệu là một khái niệm quan trọng trong lập trình hay cũng như trong Js. Kiểu dữ liệu liên quan đến cách thức mà các giá trị dữ liệu mà ta có thể sử dụng trong chương trình của mình. Kiểu dữ liệu được sử dụng nhằm xác định loại dữ liệu mà biến sẽ lưu trữ, đồng thời, giúp cho người lập trình thực hiện các thao tác khác nhau với dữ liệu có được.

Kiểu dữ liệu (data type hoặc chúng ta có thể gọi đơn giản là type) là một cách để phân loại dữ liệu cho trình biên dịch hiểu các lập trình viên muốn sử dụng loại dữ liệu nào. Kiểu dữ liệu ám chỉ đến kiểu của giá trị mà chương trình làm việc. Trước khi nói về kiểu dữ liệu js thì chúng ta nên đền cập đến các biến trước tiên. Vì các biến trong lập trình js là một cái gì đó nó lộn xộn và lỏng lẻo. Bởi vì sao, bởi ví nó có thể lưu bất kỳ loại dữ liệu nào mà mỗi dev muốn. Trong JavaScript, chúng ta sử dụng từ khóa var để khai báo một biến (let và const được thêm vào để khai báo biến trong es6). Tất nhiên do nó lộn xộn nên ta cũng có thể thay đổi kiểu giá trị của cùng một biến. Mặc dù điều này không được khuyến khích nhưng nó hoàn toàn hợp lệ trong JavaScript.

1.2. Các kiểu dữ liệu trong JavaScript

Js chia các kiểu dữ liệu ra hai nhóm là kiểu dữ liệu nguyên thủy và đối tượng:

  • Kiểu dữ liệu nguyên thủy là những loại dữ liệu mà giá trị của nó nó không thể sửa đổi trong biến (tất nhiên nó có thể thay thế). Ví dụ chuỗi là một kiểu nguyên thủy, một biến chuỗi var a = “abc”, giờ nếu muốn a chứa “ab” thì bạn chỉ có thể thay thế giá trị biến đó đang giữ bằng một giá trị mới “ab” chứ không thể xóa đi ký tự “c” từ chuỗi giá trị cũ để nó thành “ab”. Có tất cả 6 kiểu dữ liệu nguyên thủy: boolean, null, null, undefined, number, string, symbol
  • Kiểu đối tượng, giá trị biến giữ là một đối tượng nào đó. Đối tượng đó có thể thay đổi bằng cách thay đổi các thuộc tính của nó (không cần thay thế đối tượng mới).

Ta sẽ có bảng sau:

Kiểu dữ liệu Mô tả Ví dụ
String Đại diện cho kiểu dữ liệu văn bản. “lập trình từ đầu”
Number Là một số nguyên hoặc số thực 2, 5, 6.3
Biglnt Là một giá trị số nguyên lớn 98347389n
Boolean Có 2 giá trị là true hoặc false True
Undefined Là kiểu dữ liệu của biến chưa được khởi tạo giá trị Var = a
Null Kiểu rỗng Var a = null
Symbol Kiểu dữ liệu mà các thể hiện của nó là không đổi và duy nhất Var a = Symbol(‘Js’)
Đối tượng(object) Chứa các cặp giá trị và khóa của tập hợp Let a = {}

2. Kiểu dữ liệu chuỗi ký tự – String trong JavaScript

Kiểu chuỗi ký tự được sử dụng để lưu trữ dữ liệu ở dạng văn bản(text). Chuỗi ký tự trong JavaScript có thể được lưu giữ trong biến. Trong Javascript, các chuỗi được bao quanh bởi dấu nháy gồm:

  • Dấu ngoặc đơn: ‘lập trình từ đầu’
  • Dấu ngoặc kép: “lập trình từ đầu”
  • Dấu huyền: `lập trình từ đầu`

Ví dụ:

Var name = ‘lập trình từ đầu’; // chuỗi trong dấu nháy đơn

Var text = “học lập trình từ con số 0”; // chuỗi trong dấu nháy kép

Trên thực tế thì dấu nháy đơn và dấu nháy kép là giống nhau và ta có thể sử dụng một trong hai. Dấu huyền thường được sử dụng khi cần bao gồm các biến hoặc biểu thức khác vào trong một chuỗi ký tự. Điều này được thực hiện bằng cách bao bọc các biến hoặc biểu thức với ký hiệu dấu ${biến hoặc biểu thức} như trong ví dụ trên.

Chú ý

  • Không như các ngôn ngữ lập trình khác, khi sử dụng dấu ngoặc đơn (ký tự đơn) thì hiểu biến đó thuộc kiểu char. Đối với JavaScript không có loại char, tất cả đều là chuỗi (STRING). Một chuỗi có thể có một hoặc nhiều ký tự.
  • Không thể dùng để tính toán cho dù giá trị có là chữ số
  • Có thể dùng để nối với một dữ liệu khác cùng thuộc kiểu string.
  • Khi thêm một số và một chuỗi, JavaScript sẽ coi số đó là một chuỗi.

Ta sẽ có một số ký tự đặc biệt trong kiểu chuỗi này:

  • \’ : Biểu diễn ký tự nháy đơn ‘
  • \” : Biểu diễn ký tự nháy kép “
  • \\ : Biểu diễn ký tự back slash \
  • \n : Xuống dòng
  • \r : Đầu dòng
  • \t : tab

Chú ý

Trong javascript các chuỗi là bất biến, nghĩa là gì? Nghĩa là khi các chuỗi được tạo, giá trị của chúng không thể thay đổi. Để thay đổi chuỗi được lưu trữ trong một biến, trước tiên hãy hủy chuỗi ban đầu, sau đó điền biến bằng một chuỗi khác có chứa giá trị mới.

Ví dụ:

var name = "anony";

name = name + "laptrinhtudau.com";

3. Kiểu dữ liệu số – Number trong JavaScript

Kiểu dữ liệu số đại diện cho các dữ liệu ở dạng số nguyên, số thực, số thập phân và số mũ. Kiểu dữ liệu number trong JavaScript có thể xem là kiểu tổng hợp của int, float, double, … trong các ngôn ngữ lập trình khác.

Ví dụ:

let number1 = 10;
// Gán giá trị number1 = 10, number1 là kiểu number.
let number2 = 10.05;
document.writeln(number1);
// Hiển thị number1 ra trình duyệt.
document.writeln(number2);
// Hiển thị numbwer2 ra trình duyệt.
document.writeln(number1 + number2);
//Hiển thị tổng của hai số ra trình duyệt.

Ở trên là các biến number1 là số nguyên, number2 là số thực. Ta có thể thực hiện number1 + number2 bởi vì nó đều là kiểu number, không phân biệt là số, số thực, số nguyên gì cả, có thể thực hiện tất cả các phép toán.

Trong kiểu number này thì ta cần lưu ý 2 giá trị đặc biệt là:

  • Infinity: Là số “vô cực” trong toán học.
  • NaN: Là Not a Number, tức là giá trị này không phải là số

Trong javascript thì Number.MIN_VALUE = 5e-324, và giá trị lớn nhất Number.MAX_VALUE = 1.7976931348623157e+308. Có nhiều bạn trong qúa trình làm việc thì sẽ gặp một gía trị được return về là Infinity thì lúc đó nôm na hiểu rằng kết quả đó sẽ vượt quá giá trị Number của javascript. Có ai nhanh não thắc mắc vậy làm sao giải quyết được điều này, đó chính là BigInt nói trên ra đời. Tiếp theo chúng ta xem thêm một loại cũng là kiểu Number nhưng cũng phải học thêm đó là NaN. NaN trong javascript là gì? Ở đây nó có nghĩa là giá trị không phải số, được sử dụng để chỉ ra rằng một toán hạng ban đầu dự định trả về một giá trị nhưng cuối cùng không trả về một giá trị. NaN có hai đặc điểm đặc biệt: Bất kỳ hoạt động nào liên quan đến NaN (ví dụ NaN/10) sẽ trở lại NaN; NaN không bằng bất kỳ giá trị nào, bất kể so sánh với chính nó. Thật không công bằng nếu viết về NaN. Mà không nói đến một chức năng trong javascript đó là isNaN(). isNaN() Sau khi nhận một giá trị, nó sẽ cố gắng chuyển đổi giá trị thành một giá trị và bất kỳ giá trị nào không thể chuyển đổi thành giá trị sẽ khiến hàm trả về true.

Ví dụ:

alert(isNaN(NaN)); //true 
alert(isNaN(10)); //false
alert(isNaN("10")); //false
alert(isNaN("blue")); //true
alert(isNaN(true)); //false

4. Kiểu dữ liệu Boolean trong JavaScript

Kiểu dữ liệu này đại diện cho các thực thể Logic. Kiểu Boolean JavaScript là một trong những kiểu dữ liệu cơ bản được sử dụng nhiều nhất, chỉ có hai giá trị true và false (tất cả đều là chữ thường). Bên cạnh đó người dùng có thể gán (truyền) dữ liệu vào boolean vào một biến hoặc hằng, dữ liệu boolean cũng có thể được tạo ra với vai trò là kết quả của một biểu thức logic. Có hai cách để nhận giá trị kiểu boolean, đó là:

  • Gán giá trị trực tiếp.
  • Nhận được từ một điều kiện.

Ví dụ:

  • Gán giá trị trực tiếp
let a = true;

let b = false;
  • Nhận kết quả từ một biểu thức
let c = 10 > 11;

let d = 10 < 15;
  • Để kiểm chứng, chúng ta hiển thị giá trị của các biến này ra xem sao nhé:
  • document.writeln(a);
    document.writeln(b);
    document.writeln(c);
    document.writeln(d);
    // Kết quả: true false false true
    

    Hoặc một ví dụ tổng hợp nhé:

<script>
    var a = true;
    var b = false;
    var c = 6 > 2;
    var d = 6 > 10;
// Giá trị của biến a là true.
// Giá trị của biến b là false.
// Giá trị của biến c là true, vì điều kiện (6 > 2) là đúng.
// Giá trị của biến d là false, vì điều kiện (6 > 10) là sai.
</script>

Giá trị boolean thường được sử dụng trong các phép toán so sánh và có điều kiện. Chúng ta có thể sử dụng hàm khởi tạo Boolean () để tạo một đối tượng boolean. Tuy nhiên, đây thường được coi là một thói quen xấu và nên tránh.

Chú ý

Đừng nhầm lẫn giữa kiểu dữ liệu nguyên thuỷ boolean với một Boolean object