Các biến javascript được gõ.

Javascript là ngôn ngữ được nhập động, có nghĩa là các loại biến được xác định trong thời gian chạy [được thực hiện hoàn toàn bởi trình thông dịch], không giống như các ngôn ngữ được nhập tĩnh [như Java và C++], trong đó nhà phát triển phải xác định rõ ràng loại cho từng biến được khai báo

Là một nhà phát triển Javascript, hiểu rõ về các loại sẽ giúp bạn có cái nhìn toàn diện về ngôn ngữ và giúp bạn tự tin hơn với tư cách là một nhà phát triển Javascript

GIỚI THIỆU

Trong một ngôn ngữ lập trình, các giá trị có thể được biểu diễn và thao tác được gọi là các kiểu. Các loại là các nhãn được gán cho dữ liệu để cho phép máy tính hiểu được dữ liệu đó [ở cấp độ thấp, máy tính xem mọi thứ là dữ liệu [1 và 0]]

Một trong những đặc điểm cốt lõi của bất kỳ ngôn ngữ lập trình nào là có một tập hợp các loại mà ngôn ngữ đó hỗ trợ. Có hai loại loại trong Javascript. kiểu nguyên thủy và kiểu đối tượng

Trong bài viết này, độc giả sẽ tìm hiểu những điều sau đây

  • Sự khác biệt giữa ngôn ngữ kiểu động và kiểu tĩnh
  • Sự khác biệt giữa một loại và một giá trị trong Javascript
  • Các loại và giá trị nguyên thủy
  • Loại đối tượng
  • Thuộc tính đối tượng khác nhau
  • Bộ mô tả và thuộc tính thuộc tính đối tượng
  • Các đối tượng Javascript tích hợp
  • Sự khác biệt giữa Mảng và Mảng đã nhập [Bộ sưu tập được lập chỉ mục]
  • Cách sao chép các giá trị nguyên thủy và tham chiếu
  • Cách ngăn xếp Javascript và bộ nhớ heap hoạt động với các giá trị nguyên thủy và tham chiếu

NGÔN NGỮ KIỂU TĨNH VÀ ĐỘNG

Trong một ngôn ngữ lập trình, một biến giống như một thùng chứa rỗng, theo nghĩa nó được sử dụng để lưu trữ các loại giá trị khác nhau

Trong một ngôn ngữ được nhập tĩnh, loại giá trị có thể được lưu trữ trong một biến được nhà phát triển xác định rõ ràng. Trong ngôn ngữ được nhập động như Javascript, loại được trình thông dịch ngầm đặt trong thời gian chạy

LOẠI VS GIÁ TRỊ TRONG JAVASCRIPT

Theo Đặc tả Javascript

Loại ngôn ngữ ECMAScript tương ứng với các giá trị được lập trình viên ECMAScript thao tác trực tiếp bằng ngôn ngữ ECMAScript. Các loại ngôn ngữ ECMAScript là Undefined, Null, Boolean, String, Symbol, Number, BigInt và Object. Giá trị ngôn ngữ ECMAScript là giá trị được đặc trưng bởi loại ngôn ngữ ECMAScript

Câu lệnh trước có nghĩa là mỗi loại Javascript có [các] loại giá trị cụ thể mà nó chấp nhận. Ví dụ: các loại hình thể thao khác nhau có các quy tắc cụ thể của riêng chúng]. Cũng giống như cách bạn không thể ghi điểm vào rổ [luật bóng rổ] trong bóng đá, giá trị

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
7 không thể được lưu trữ dưới dạng loại
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
8 trong Javascript

LOẠI NGUYÊN TẮC

Trong Javascript, Primitive type là kiểu dữ liệu có giá trị bất biến

Javascript có các loại nguyên thủy sau [MDN]

  • vô giá trị
  • chưa xác định
  • Booleans
  • Dây
  • Các loại số [Number và BigInt]
  • ký hiệu

Các loại nguyên thủy xuất hiện trong Javascript dưới dạng giá trị bằng chữ

2
4
6
8
10
true;
"good";
3.14;
null;
undefined;

hoặc dưới dạng các thể hiện đối tượng của Trình tạo của chúng - mặc dù các thể hiện đối tượng này hiếm khi được sử dụng

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object

không có giá trị [MDN]

Theo Đặc tả Javascript

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
9 là một giá trị nguyên thủy đại diện cho sự vắng mặt có chủ ý của bất kỳ giá trị đối tượng nào

Null là một từ khóa Javascript thường được sử dụng để biểu thị sự vắng mặt của một giá trị. Null được coi là thành viên duy nhất của loại của nó [kiểu Null] và nó có thể được sử dụng để biểu thị “không có giá trị” cho các chuỗi và số cũng như các đối tượng

Khi toán tử

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
0 được sử dụng trên null, chuỗi “đối tượng” được trả về. Đây thực sự là một sai lầm trong quá trình triển khai Javascript ban đầu. Nên sử dụng toán tử nghiêm ngặt
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
1 thay vì
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
0 khi kiểm tra loại giá trị null

Null cũng có thể được coi là một giá trị đối tượng đặc biệt biểu thị “không có đối tượng”

Ví dụ

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object

Trong đoạn mã trước, biến

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
3 được gán giá trị null sau khi ban đầu nó được gán cho một đối tượng. Giá trị null có nghĩa là một đối tượng dự kiến ​​sẽ được gán cho một biến, nhưng nó không được gán vì một lý do nào đó. Đây cũng là trường hợp khi
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
4 trả về giá trị null

không xác định [MDN]

Không xác định được sử dụng để biểu thị sự vắng mặt của một giá trị trong JavaScript, giống như

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
9

Một giá trị không xác định được trả về

  • Khi một biến chưa được khởi tạo
  • Khi bạn cố gắng truy cập thuộc tính đối tượng hoặc phần tử mảng không tồn tại
  • Khi các chức năng không trả về một giá trị rõ ràng
  • Khi một giá trị không được chuyển đến một tham số chức năng, giá trị của tham số sẽ trở thành không xác định

Giá trị không xác định là thành viên duy nhất của loại Không xác định

Toán tử đẳng thức

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
6 coi
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
7 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
9 là bằng nhau.
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
9 Sử dụng toán tử đẳng thức chặt chẽ
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
1 để phân biệt chúng.
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
71

Boolean [MDN]

Theo Đặc tả Javascript

Kiểu Boolean đại diện cho một thực thể logic có hai giá trị, được gọi là true và false

Booleans chỉ đơn giản là các giá trị

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
72 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
73 của JavaScript

JavaScript cũng có thể hoàn toàn chuyển đổi các loại giá trị khác thành boolean [giá trị thật và giả]

Tìm hiểu thêm về kiểu Boolean tại đây

Chuỗi [MDN]

Kiểu String dùng để biểu diễn văn bản trong Javascript. Tuy nhiên, giá trị chuỗi là một chuỗi bất biến gồm các giá trị 16 bit, mỗi giá trị đại diện cho một ký tự Unicode

Những điều quan trọng cần biết về chuỗi

  • Chuỗi Javascript [và mảng] sử dụng lập chỉ mục dựa trên số không. giá trị 16 bit đầu tiên nằm ở chỉ mục
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    74, chỉ số tiếp theo là
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    75, v.v.
  • Độ dài của một chuỗi là số giá trị 16 bit mà nó chứa
  • Trong ES6+, chuỗi có thể lặp lại, có thể sử dụng
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    76 trên chuỗi

Tìm hiểu thêm về Chuỗi tại đây

Loại số [MDN]

Các kiểu số được sử dụng để biểu diễn các số trong Javascript

Có hai loại số trong Javascript

  1. Loại số
  2. Loại BigInt

Loại số

Đây là kiểu số chính của Javascript. Một giá trị số có thể ở dạng số nguyên [

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
77] hoặc số dấu phẩy động [
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
78].
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
79 và
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
60 cũng được coi là giá trị số trong Javascript. Giá trị
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
79 [Không phải là Số] về mặt kỹ thuật là một giá trị không phải là số mà một câu lệnh có thể ước tính. Tuy nhiên, giá trị
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
60 đại diện cho vô cực toán học [số lớn hơn số tự nhiên]. Cả hai đều là hằng số toàn cục [thuộc tính của đối tượng toàn cục. e. g. , đối tượng
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
63 trong trình duyệt]

Tìm hiểu thêm về kiểu Number tại đây

Loại BigInt

Loại BigInt đã được thêm vào trong ECMAScript10 [ES10]. Nó là một kiểu số có giá trị là số nguyên. Nó được đưa vào JavaScript chủ yếu để cho phép biểu diễn các số nguyên 64 bit, được yêu cầu để tương thích với các ngôn ngữ lập trình và API khác

Trước ES10, giá trị số tối đa được tạo trong Javascript sử dụng số bằng chữ hoặc hàm tạo

2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
64 và được lưu trữ trong
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
65, tương đương với
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
66. Tuy nhiên, với kiểu BigInt, chúng ta có thể chỉ định các số lớn hơn
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
65. Các giá trị BigInt có thể có hàng nghìn hoặc thậm chí hàng triệu chữ số

Giá trị

2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
68 có thể được tạo bằng cách sử dụng hàm
2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
69 hoặc nối thêm
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
60 vào cuối giá trị số nguyên

Thí dụ

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
7

Tìm hiểu thêm về BigInt tại đây

Ký hiệu [MDN]

Biểu tượng là một loại dữ liệu duy nhất và không thay đổi được giới thiệu trong ECMAScript6 [ES6] để dùng làm tên thuộc tính không phải chuỗi cho các đối tượng. Trước ES6, tên thuộc tính của các đối tượng trong Javascript chỉ có thể là chuỗi, nhưng với kiểu Ký hiệu, chúng ta cũng có thể chỉ định tên thuộc tính là Ký hiệu

Không thể đếm được các biểu tượng, đó là lý do không thể truy cập biểu tượng bằng phương thức

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
61 trên một đối tượng sử dụng nó làm khóa

Tạo biểu tượng

Hàm

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
62 toàn cầu

2
4
6
8
10
true;
"good";
3.14;
null;
undefined;
6

Trong đoạn mã trước, ký hiệu

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
63 được tạo bằng cách sử dụng hàm
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
62 và được sử dụng để gán một thuộc tính mới cho đối tượng
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
65. Hàm Biểu tượng cũng chấp nhận một đối số tùy chọn là mô tả của biểu tượng. Tuy nhiên, không thể sử dụng mô tả để truy cập vào thuộc tính và cách tốt nhất là luôn cung cấp mô tả để giúp việc đọc và gỡ lỗi dễ dàng hơn

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
6

Biểu tượng luôn là duy nhất

Mỗi Biểu tượng là duy nhất;

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
5

Trong mã trước đó, hai Biểu tượng giống hệt nhau,

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
66 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
67, được tạo; . Tìm hiểu thêm về Ký hiệu tại đây

Phát lại phiên mã nguồn mở

OpenReplay là bộ phát lại phiên mã nguồn mở cho phép bạn xem những gì người dùng làm trên ứng dụng web của bạn, giúp bạn khắc phục sự cố nhanh hơn. OpenReplay tự lưu trữ để kiểm soát hoàn toàn dữ liệu của bạn

Bắt đầu tận hưởng trải nghiệm sửa lỗi của bạn - bắt đầu sử dụng OpenReplay miễn phí

LOẠI ĐỐI TƯỢNG

Theo Đặc tả JavaScript

Một đối tượng về mặt logic là một tập hợp các thuộc tính

Một Đối tượng có thể được coi là một giá trị tổng hợp, được tạo thành từ nhiều giá trị [giá trị nguyên thủy và các đối tượng khác], đồng thời cho phép bạn lưu trữ và truy xuất các giá trị theo tên. Các giá trị được thu thập bởi một đối tượng được gọi là thuộc tính

Thuộc tính đối tượng

Thuộc tính của đối tượng [giá trị thuộc tính] là phần cốt lõi của bất kỳ đối tượng nào và nó được tạo thành từ tên [khóa] và giá trị. Tên thuộc tính thường là các chuỗi [chúng cũng có thể là Ký hiệu] được ánh xạ tới một giá trị

Các loại thuộc tính đối tượng

Có hai thuộc tính đối tượng. Thuộc tính dữ liệu và thuộc tính truy cập

Thuộc tính dữ liệu

Khi một đối tượng được viết như thế này —

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
8

Trong đoạn mã trước, các thuộc tính

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
68 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
69 của đối tượng
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
50 được gọi là Thuộc tính dữ liệu. Đây là cách mặc định để tạo các thuộc tính đối tượng trong JavaScript [Như đã thấy trong hầu hết các mã Javascript]

Thuộc tính người truy cập

Thuộc tính bộ truy cập là tổng hợp của hai hàm. hàm

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
51 và hàm
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
52. Nó liên kết một tên thuộc tính [khóa] với hai hàm truy cập [
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
51 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
52] để tìm nạp hoặc lưu trữ một giá trị

Thí dụ

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
6

Trong đoạn mã trước, thuộc tính

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
68 được tạo và truy xuất từ ​​cả
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
56 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
50. Tuy nhiên, cú pháp được sử dụng để tạo thuộc tính
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
68 trong đối tượng
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
56 là khác. Từ khóa
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
51 được theo sau bởi một khai báo hàm với tên thuộc tính [i. e.
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
68] trả về giá trị thuộc tính [“nhà văn”]

Cú pháp truy xuất các thuộc tính của trình truy cập và thuộc tính dữ liệu là giống nhau, bất kể các thuộc tính được tạo như thế nào

  • new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    82
  • new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    83

Hàm

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
51 được gọi là getter vì nó được sử dụng để lấy giá trị của thuộc tính đối tượng. nếu
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
56 được cập nhật như thế này
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
86, bản cập nhật sẽ không hoạt động. Điều này là do chúng ta cần một hàm setter tương ứng cho thuộc tính
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
68. Các hàm setter được sử dụng để đặt các giá trị trong một đối tượng truy cập

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
0

Trong đoạn mã trước,

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
56 hiện có cả chức năng
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
89 và
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
60. Hàm setter hiện có thể cập nhật giá trị thuộc tính
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
68

Mô tả thuộc tính đối tượng và thuộc tính

Một bộ mô tả thuộc tính đối tượng là một giá trị tổng hợp. Nó tổng hợp nhiều giá trị được gọi là thuộc tính thuộc tính xác định siêu dữ liệu của giá trị được liên kết với một khóa trong một đối tượng. Nó chỉ đơn giản xác định giá trị của một thuộc tính đối tượng sẽ trông như thế nào thông qua các thuộc tính thuộc tính sau

  • [[Giá trị]]
  • [[Lấy]]
  • [[Bộ]]
  • [[Có thể ghi]]
  • [[Vô số]]
  • [[Có thể định cấu hình]]

Ký hiệu ____562 được sử dụng vì chúng là thuộc tính bên trong. Thuộc tính nội bộ là thuộc tính được sử dụng bởi các thông số kỹ thuật ECMAScript [có nghĩa là chúng không được hiển thị trực tiếp như hầu hết các thuộc tính]. Để sửa đổi các thuộc tính bên trong, chúng tôi sử dụng các phương thức đặc biệt do Javascript cung cấp

Trong sơ đồ trước, bộ mô tả thuộc tính của

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
63 chứa các thuộc tính thuộc tính khác nhau của thuộc tính
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
64 và
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
65object`]

Tìm hiểu thêm về bộ mô tả thuộc tính và thuộc tính tại đây

Các đối tượng tích hợp [MDN]

Bạn nên biết chúng là gì từ các đối tượng 'tích hợp' tên. Đối tượng tích hợp đơn giản là các đối tượng đi kèm với Javascript theo mặc định, cho phép bạn triển khai các chức năng khác nhau trong ứng dụng của mình

Có nhiều đối tượng tích hợp khác nhau [kiểm tra tại đây], nhưng trong bài viết này, chúng ta sẽ xem xét các đối tượng sau

  • Đối tượng cơ bản

  • Số và Ngày

  • Xử lý văn bản

  • Bộ sưu tập được lập chỉ mục

  • Bộ sưu tập có khóa

Đối tượng cơ bản

Theo định nghĩa của MDN

Đây là những đối tượng cơ bản, cơ bản mà tất cả các đối tượng khác dựa trên. Điều này bao gồm các đối tượng chung, booleans, hàm và ký hiệu

Thí dụ. Khi bạn tạo một “đối tượng bình thường”

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
0

Số và Ngày

Đây là những đối tượng cơ sở đại diện cho số, ngày tháng và phép tính toán học. - MDN

  • Con số
  • BigInt
  • môn Toán
  • Ngày

Hãy nhìn vào đối tượng toán học. Đối tượng

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
66 cho phép chúng tôi thực hiện các phép toán trong Javascript, thông qua các phương thức và thuộc tính khác nhau của nó

Ví dụ, nếu chúng ta muốn tìm căn bậc hai của một số, chúng ta sẽ sử dụng phương pháp

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
67

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
1

Xử lý văn bản

Các đối tượng này đại diện cho các chuỗi và hỗ trợ thao tác với chúng. Chuỗi và RegExp

Bộ sưu tập được lập chỉ mục. Mảng và Mảng đã gõ

Mảng là các đối tượng thông thường với các thuộc tính có khóa số nguyên. Nó là một tập hợp có thứ tự các giá trị. Mỗi giá trị được gọi là một phần tử và mỗi phần tử có một vị trí số trong mảng, được gọi là chỉ mục của nó. Một mảng cũng có thuộc tính

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
68 có thể được sử dụng để truy xuất số lượng phần tử có trong một mảng

Thí dụ

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
2

Typed Arrays được giới thiệu trong ES6, chủ yếu được thiết kế để hoạt động với các kiểu số. Các mảng đã nhập về mặt kỹ thuật không phải là mảng [_______569 trả về

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
73 cho chúng], nhưng các phương thức mảng thông thường có thể được sử dụng trên chúng

Sự khác biệt giữa Mảng đã nhập và Mảng là

  • Các phần tử của một mảng đã nhập đều là số, nhưng không phải là số Javascript thông thường [sử dụng định dạng độ chính xác kép 64 bit]. trong các mảng đã nhập, bạn có thể chỉ định loại số ưa thích của mình [số nguyên có dấu và không dấu và số dấu phẩy động IEEE-754] và kích thước của nó [8 bit đến 64 bit] mà bạn muốn lưu trữ trong mảng
  • Các mảng đã nhập có độ dài cố định;
  • Các phần tử của mảng đã nhập luôn được khởi tạo thành
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    74 khi mảng được tạo

11 loại Số sau đây có thể được lưu trữ và thao tác trong Mảng được nhập

ConfructorNumeric typeInt8Array [] đã ký bytesuint8array [] không dấu bytesuint8clampedArray [] byte không dấu . số Javascript thông thường

Bộ sưu tập có khóa

Theo MDN

Các đối tượng này đại diện cho các bộ sưu tập sử dụng các khóa. Các bộ sưu tập có thể lặp lại [Bản đồ và Tập hợp] chứa các phần tử dễ dàng lặp lại theo thứ tự chèn

  • Bản đồ

  • Bộ

  • Bản đồ yếu

  • Bộ yếu

GIÁ TRỊ NGUYÊN TẮC VÀ THAM CHIẾU

Khi một biến được gán một giá trị của Loại nguyên thủy Javascript, thì biến đó được cho là chứa một giá trị nguyên thủy. Tuy nhiên, nếu một Đối tượng [đối tượng thông thường, mảng và hàm] được gán làm giá trị cho một biến, thì biến đó được cho là chứa giá trị tham chiếu của Đối tượng

Công cụ Javascript lưu trữ các giá trị khác nhau trong bộ nhớ—ngăn xếp và đống

Bộ nhớ ngăn xếp và đống

Ngăn xếp và đống là hai vị trí bộ nhớ nơi các biến được lưu trữ khi chúng được khai báo trong JavaScript. Chúng tôi sẽ sử dụng ngăn xếp và đống để hiểu rõ hơn về các giá trị nguyên thủy và tham chiếu, đặc biệt là cách chúng được lưu trữ dưới dạng dữ liệu tĩnh và động trên ngăn xếp và đống tương ứng

Vì lý do hiệu suất, các giá trị nguyên thủy và giá trị tham chiếu được lưu trữ dưới dạng dữ liệu tĩnh [dữ liệu có kích thước cố định] trên ngăn xếp. Ngược lại, các Đối tượng được lưu trữ dưới dạng dữ liệu động trên heap [giá trị tham chiếu đối tượng được lưu trữ trên ngăn xếp] do tính linh hoạt của bộ nhớ của heap

Ví dụ

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
3

Ở đoạn code trước, vì giá trị gốc của

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
7 và
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
03 được lưu trữ trong biến
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
04 và
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
05 nên các biến sẽ được Javascript lưu trữ trên ngăn xếp

Bây giờ hãy tạo một đối tượng sẽ được lưu trữ trên heap

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
4

Trong sơ đồ trước, Javascript gán bộ nhớ trên ngăn xếp cho ba biến

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
04,
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
05 và
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
08. Một đối tượng mới cũng được tạo trong bộ nhớ heap được liên kết với biến
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
08 trên ngăn xếp. Do liên kết giữa biến
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
08 và đối tượng trên bộ nhớ heap, chúng ta nói rằng biến
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
08 lưu trữ giá trị tham chiếu của đối tượng trên bộ nhớ heap

Sao chép các giá trị nguyên thủy

Khi một giá trị nguyên thủy được gán từ biến này sang biến khác bằng toán tử

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
02, giá trị đó được cho là đã được sao chép sang biến mới

Thí dụ

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
5

Trong đoạn mã trước

  • Một biến mới
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    03 được khai báo và khởi tạo với giá trị là “John”
  • Tiếp theo, biến
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    04 được khai báo và biến
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    03 được gán làm giá trị của nó

Về cơ bản, Javascript tạo một bản sao của giá trị nguyên thủy “John” và gán nó cho biến

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
04.

Sao chép giá trị tham chiếu

Khi một giá trị tham chiếu của một đối tượng được gán từ biến này sang biến khác, cả hai biến sẽ tham chiếu đến cùng một đối tượng trên bộ nhớ heap. Điều này có nghĩa là những thay đổi được thực hiện đối với một biến sẽ ảnh hưởng đến biến khác

Thí dụ

new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
6

Trong đoạn mã trước

  • Đầu tiên, một biến
    let greetingObject = {
    english: 'hello',
    french: 'bonjour'
    }
    
    let greetingObject = null;  //no object
    
    08 được khai báo và khởi tạo với một đối tượng có hai thuộc tính là
    let greetingObject = {
    english: 'hello',
    french: 'bonjour'
    }
    
    let greetingObject = null;  //no object
    
    04 và
    let greetingObject = {
    english: 'hello',
    french: 'bonjour'
    }
    
    let greetingObject = null;  //no object
    
    05
  • Thứ hai, biến
    let greetingObject = {
    english: 'hello',
    french: 'bonjour'
    }
    
    let greetingObject = null;  //no object
    
    08 được gán cho biến
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    11. Hai biến bây giờ tham chiếu cùng một đối tượng trong bộ nhớ

  • Cuối cùng, biến
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    11 thay đổi thuộc tính
    let greetingObject = {
    english: 'hello',
    french: 'bonjour'
    }
    
    let greetingObject = null;  //no object
    
    05 của đối tượng trên bộ nhớ heap từ
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    14 thành
    new Boolean [false]; //object 
    new String ["happy"]; // object
    new Number [22]; // object
    15

Như bạn đã biết, các biến

let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
08 và
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
11 tham chiếu cùng một đối tượng, vì vậy những thay đổi được thực hiện đối với đối tượng thông qua biến
new Boolean [false]; //object 
new String ["happy"]; // object
new Number [22]; // object
11 cũng được phản ánh trong biến
let greetingObject = {
english: 'hello',
french: 'bonjour'
}

let greetingObject = null;  //no object
08

PHẦN KẾT LUẬN

Bây giờ bạn đã biết về các loại và các giá trị khác nhau của chúng trong Javascript, bạn sẽ nhận thức rõ hơn về cách bạn sử dụng các loại và giá trị khác nhau khi sử dụng Javascript

JavaScript được gõ tĩnh hay động

Ngôn ngữ được nhập động là những ngôn ngữ [như JavaScript] mà trình thông dịch gán cho biến một loại trong thời gian chạy dựa trên giá trị của biến tại thời điểm đó.

Các biến JavaScript có động không

Javascript là ngôn ngữ gõ động . Khi bạn khai báo một biến, bạn không cần chỉ định biến đó là kiểu gì. Công cụ Javascript suy ra loại biến này dựa trên giá trị được gán vào thời gian chạy.

TypeScript được gõ tĩnh hay động

Trong bài viết này, chúng ta sẽ khám phá cách nhập tĩnh trong TypeScript và điều gì làm cho ngôn ngữ được nhập tĩnh tùy chọn . TypeScript là một ngôn ngữ lập trình được gõ mạnh dựa trên JavaScript.

Tại sao JavaScript là động

JavaScript được gọi là ngôn ngữ động bởi vì nó không chỉ có một vài khía cạnh động, mà gần như mọi thứ đều động . Tất cả các biến là động [cả về loại và sự tồn tại] và thậm chí mã là động. Bạn có thể tạo các biến mới trong thời gian chạy và loại biến được xác định trong thời gian chạy.

Chủ Đề