Các kiểu dữ liệu trong javascript

Các kiểu dữ liệu javascript
Các kiểu dữ liệu javascript

I) Khái quát các kiểu dữ liệu trong javascript 

JavaScript is a loosely typed or a dynamic language.  Tạm dịch Javascript là một ngôn ngữ kiểu lỏng lẻo( nghĩa là viết chương trình mà biến không cần phải định nghĩa trước kiểu) hoặc là một ngôn ngữ lập trình động.

Biến trong JavaScript không được gắn trực tiếp với kiểu giá trị cụ thể và bất kỳ biến nào cũng có thể được gắn lại giá trị với tất cả các kiểu dữ liệu.

Theo tiêu chuẩn ECMAScript mới nhất  chia dữ liệu javascript thành 9 kiểu:

  • Dữ liệu nguyên thủy gồm có 6 kiểu bên dưới:

Kiểu undefined: typeof instance === “undefined”

Kiểu Boolean: typeof instance === “boolean”

Kiểu số: typeof instance === “number”

Kiểu chuỗi: typeof instance === “string”

Kiểu số BigInttypeof instance === “bigint”

Kiểu Symbol: typeof instance === “symbol”

         Lưu ý: Chúng ta dùng từ khóa type of  để check kiểu dữ liệu nhé.

  • Kiểu null: typeof instance === “object”. Một kiểu sơ khai mà giá trị của nó có thêm một vai trò đặc biệt: nếu object không kế thừa từ đối tượng nào khác, null sẽ được hiển thị ở cuối chuỗi Prototype

 

  • Kiểu Object:typeof instance === “object”. Kiểu phi dữ liệu nhưng có cấu trúc cho các đối tượng được khởi tạo và được dùng như cấu trúc dữ liệu: new Object, new Array, new Map, new Set, new WeakMap, new WeakSet, new Date hay bất kỳ đối tượng nào được tạo ra với từ khóa new.

 Lưu ý: Kiểu Array, Date, Map, Set… là trường hợp cụ thể của chỉ một kiểu Object.

 

  • Kiểu phi dữ liệu Function, mặc dù khi gọi với typeof nó có nhãn riêng: typeof instance === “function”. Giá trị trả về từ typeof này là một nhãn đặc biệt cho các function, cho dù constructor của Function phát sinh từ Object constructor.

Khi code javascript nên chú ý trình duyệt chúng ta sử dụng, nhất là IE không hỗ trợ nhiều các chuẩn ES6, ES7, Newer(2016+)…

       Tuyển lập trình viên java lương upto ~2000$

       Tuyển lập trình viên js lương upto ~2500$

II) Các kiểu dữ liệu của javascript

1.Kiểu dữ liệu nguyên thủy 

1.1  Kiểu undefined

Biến có giá trị undefined là biến mà có giá trị chưa được khởi tạo(chưa được gán giá trị);

var car; // biến đang có kiểu undefined

Giờ thì chúng ta sẽ check biến có phải là undefined không nhé

if(car === undefined){

}

1.2 Kiểu dữ liệu Boolean

Boolean là loại dữ liệu logic chỉ có giá trị true/đúng hoặc false/sai

      • Falsy: Một giá trị được chuyển thành false: false (Boolean), null, undefined, 0 (Number), NaN, empty string. Nghĩa là giá trị trả về false không phải duy nhất là giá trị false của Boolean mà còn các giá trị trên, khi code chúng ta cần chú ý
      • Truthy: Một giá trị được chuyển thành to true: ngược lại của falsy

Lưu ý với một số trường hợp đặc biệt :

        • 0 (Number) trả về  falsy, nhưng  ‘0’ (String)  trả về truthy
        • [] (empty array), {} (empty object) trả về truthy nhé
        • Cách check nhiều giá trị true/false:
          • NG: if(name === null || name === undefined || name === ”)
          • OK: if(!name)

1.3 Kiểu dữ liệu Number

    • Kiểu dữ liệu Number trong javascript là một kiểu dữ liệu số ở định dạng dấu chấm động 64 bit chính xác kép (IEEE 754)
    • Khác với các ngôn ngữ lập trình khác thì Integers and Floats cùng là kiểu số giống nhau.
    • NaN: not a number
    • MAX_VALUE === 1.7976931348623157e+308

Ví dụ:

let count = 10;

1.4 Kiểu dữ liệu String

    • Chuỗi ký tự có thể được bao bởi dấu nháy đơn ” hoặc nháy kép “”

Ví dụ:

const s1 = ‘This is string’ 

const s2 = “This is another string”

 1.5 Kiểu dữ liệu BigInt

    • Kiểu BigInt là một kiểu giá trị số trong JavaScript, đại diện cho các giá trị số nguyên với độ chính xác (precision) tùy ý.
    • Với BigInt, chúng ta có thể lưu và tính toán các số nguyên lớn hơn, thậm chí trên cả giới hạn số nguyên an toàn của kiểu Number.
    • Một số BigInt được tạo ra bằng cách thêm n vào cuối một số nguyên hoặc bằng cách sử dụng constructor.
    • Bạn có thể đạt được giá trị an toàn nhất với việc có thể tăng giá trị với Number bằng cách sử dụng constant MAX_SAFE_INTEGER.
    • Với sự ra đời của kiểu BigInt, giờ đây bạn có thể tính toán với những con số còn lớn hơn MAX_SAFE_INTEGER.
    • Trong ví dụ sau, khi tăng dần giá trị MAX_SAFE_INTEGER, bạn vẫn nhận được kết qua như mong muốn với BigInt:

const x = 2n ** 53n;

9007199254740992n

const y = x + 1n;

9007199254740993n

    • Bạn có thể sử dụng các toán tử +, *, -, **, và % với BigInt như với Number. Một số BigInt không hoàn toàn bằng (===) một số Number, nhưng có thể bằng khi ép kiểu (==).
    • Số BigInt xử lý giống với Number khi được chuyển đổi kiểu về Boolean: if, ||, &&, Boolean, !.
    • Số BigInt không thể dùng chung với số Number để tính toán. Khi đó, lỗi TypeError sẽ xảy ra.

1.6 Kiểu Symbol

    • Kiểu Symbol là một kiểu mới trong Javascript tiêu chuẩn ECMAScript 6. Mỗi Symbol là một giá trị sơ khai đơn nhất và bất biến và có thể được dùng như một khóa của một Object . Ta cũng có thể so sánh với các enumeration (enum) trong C.
    • Trong javascript giá trị Symbol được tạo ra từ function Symbol() là function tự động tạo ra một giá trị vô danh, duy nhất.
    • Symbol có thẻ có một mô tả tùy chọn, nhưng chỉ phục vụ mục đích debug.
    • Giá trị Sysbol đại diện cho một mã định danh duy nhất. Ví dụ:

// Here are two symbols with the same description:

let Sym1 = Symbol(“Sym”)

let Sym2 = Symbol(“Sym”)

console.log(Sym1 === Sym2) // returns “false”

// Symbols are guaranteed to be unique.

// Even if we create many symbols with the same description,

// they are different values.

2) Kiểu Null

Biến có giá trị null thì nó không chứa đối tượng nào cả (rỗng)

var object = null;

 

3) Kiểu Object(kiểu đối tượng)

Trong Javascript, đối tượng có thể được xem là tập hợp các thuộc tính. Với object literal syntax, một tập hợp hữu hạn các thuộc tính được khởi tạo; sau đó thuộc tính có thể được thêm hoặc loại bỏ.

Ví dụ:

var car = { myCar: ‘Saturn’,

                       getCar: carTypes(‘Honda’),

                       special: sales };

console.log(car.myCar);   // Saturn

console.log(car.getCar);  // Honda

console.log(car.special); // Toyota

Tên các thuộc tính của object có thể là một chuỗi ký tự bất kỳ, bao gồm cả chuỗi trắng. Nếu tên thuộc tính không phải mã hợp lệ Javascript hoặc là số thì phải bao trong nháy kép.

Không thể truy cập tên thuộc tính không phải là mã định danh hợp lệ dưới dạng thuộc tính dấu chấm (.), nhưng có thể được truy cập và đặt bằng ký hiệu giống như mảng(“[]”). Xem ví dụ bên dưới:

var unusualPropertyNames = {

  ”: ‘An empty string’,

  ‘!’: ‘Bang!’

}

console.log(unusualPropertyNames.”);   // SyntaxError: Unexpected string

console.log(unusualPropertyNames[”]);  // An empty string

console.log(unusualPropertyNames.!);    // SyntaxError: Unexpected token !

console.log(unusualPropertyNames[‘!’]); // Bang!

    Đối tượng Mảng(Array) 

Array cũng là là một object, nếu dùng typeof cho một mảng thì kết quả trả về là object.

Mảng trong JS dùng index truy cập các phần tử, đây là cách tốt nhất. Tuy nhiên tương tự các object khác, những phần tử có thể được truy cập thông qua tên thuộc tính.

Ví dụ về mảng

let ageArray = [];

ageArray [“Marry”] = 10;

ageArray[“David”] = 20 ;

ageArray[“An”] = 30;

Để truy cập mảng ageArray [“Marry”]  hoặc ageArray[0].

Console.log(ageArray [“Marry”]); // kết quả trả về bằng 10

Console.log(ageArray [0]); // kết quả trả về bằng 10

Lưu ý: index của mảng nên để là số không đặt tên thuộc tính không tốt, nếu dùng thuộc tính nên sử dụng Object thay thế.

 Đối tượng Date

Date cũng là một là Object . Để thực hiện các thao tác với thời gian, chúng ta sử dụng đối tượng Date.

Cú pháp cho việc khởi tạo giá trị Date

new Date(); // thời gian hiện tại

new Date(value);

new Date(dateString);

new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);

Các tham số

 value

Giá trị số nguyên đại diện cho số mili giây kể từ 01/01/1970-00:00:00 UTC.

dateString

Giá trị chuỗi đại diện cho một ngày. Chuỗi phải ở định dạng được công nhận bới phương thức Date.parse().

year

Giá trị số nguyên đại diện cho năm. Các giá trị từ 0 đến 99 ứng với các năm từ 1900 đến 1999.

month

Giá trị số nguyên đại diện cho tháng, bắt đầu với 0 cho Tháng Một đến 11 cho Tháng Mười Hai.

date

Tùy chọn. Giá trị số nguyên đại diện cho ngày trong tháng.

hours

Tùy chọn. Giá trị số nguyên đại diện cho giờ trong ngày.

minutes

Tùy chọn. Giá trị số nguyên đại diện cho phần phút của một thời gian.

seconds

Tùy chọn. Giá trị số nguyên đại diện cho phần giây của một thời gian.

milliseconds

Tùy chọn. Giá trị số nguyên đại diện cho phần mili giây của một thời gian.

 

Ví dụ Date

var today = new Date();

var birthday = new Date(‘October 11, 2020 15:27:08’);

var birthday = new Date(‘2020-12-30T15:27:08’);

var birthday = new Date(2020, 10, 30);

var birthday = new Date(2020, 10, 30, 15, 27, 8);

 

4. Kiểu phi dữ liệu Function

Một function  là một đoạn mã có thể được gọi bằng mã khác hoặc của chính nó, hoặc một biến tham chiếu đến function. Khi một function được gọi, các đối số được truyền đến function dưới dạng đầu vào và function có thể tùy chọn trả về một giá trị. Một function trong JavaScript cũng là một đối tượng.

Tên function là một mã định danh được bao gồm như một phần của khai báo function  hoặc biểu thức function. Phạm vi của tên function phụ thuộc vào việc tên function là một khai báo hay biểu thức.

Ví dụ

 function add(a,b){

return a+b;

};

 // Function declaration

function foo() {};

// Named function expression

(function bar() {});

// or using the ECMAScript 2015 arrow notation

const foo = () => {};

phần về function chỉ giới thiệu qua còn chi tiết sẽ có bài viết sau.

Be the first to comment

Leave a Reply

Your email address will not be published.


*