JavaScript tĩnh hay động

Trong JavaScript, Binding là quá trình liên kết định nghĩa hàm chính xác với lệnh gọi hàm hoặc liên kết giá trị với biến. Một địa chỉ bộ nhớ được gán cho mỗi định nghĩa chức năng ở giai đoạn biên dịch. Khi một chức năng cụ thể được gọi, việc thực thi chương trình sẽ chuyển điều khiển đến địa chỉ bộ nhớ cụ thể đó và tìm nạp mã chức năng được lưu trữ tại vị trí được thực thi. Cơ chế này được gọi là ràng buộc

Ràng buộc trong JavaScript được chia thành hai loại. “Ràng buộc tĩnh” và “Ràng buộc động”. Nếu tất cả các thông tin cần thiết liên quan đến lệnh gọi hàm và gán biến đã được biết tại thời điểm biên dịch, thì nó được gọi là Liên kết tĩnh. Trong trường hợp khác, Liên kết động xảy ra khi thông tin bắt buộc được xác nhận trong thời gian chạy

Bài viết này sẽ giải thích Liên kết tĩnh và Liên kết động trong JavaScript với sự trợ giúp của các ví dụ thích hợp. Vì vậy, hãy bắt đầu

Liên kết tĩnh trong JavaScript

"Ràng buộc tĩnh" của JavaScript xảy ra khi trình biên dịch nhận ra tất cả thông tin bắt buộc liên quan đến việc gán giá trị cho biến hoặc gọi hàm, ở giai đoạn biên dịch. Nó còn được gọi là "Ràng buộc thời gian biên dịch" hoặc "Ràng buộc sớm"

Kỹ thuật liên kết tĩnh của JavaScript được triển khai trong quá trình mã hóa, giúp chương trình hiệu quả hơn vì tất cả các giá trị biến và lệnh gọi hàm được xác định trước trong loại liên kết này. Tuy nhiên, nó cũng ảnh hưởng đến tính linh hoạt của mã

Một số ví dụ về thủ tục Static Binding là. “Quá tải toán tử” và “Quá tải chức năng”

Bây giờ, hãy xem cách Liên kết tĩnh hoạt động đằng sau Quá tải toán tử và Quá tải hàm trong JavaScript

Quá tải toán tử với liên kết tĩnh trong JavaScript

JavaScript cho phép chúng tôi xác định lại cách toán tử hoạt động đối với các loại do người dùng xác định khác nhau, chẳng hạn như cấu trúc và đối tượng. Chức năng này được gọi là Quá tải toán tử

Thí dụ. Quá tải toán tử với liên kết tĩnh trong JavaScript

Vì quá tải toán tử cung cấp chức năng thay đổi hành vi của toán tử đã chỉ định tại thời điểm biên dịch, chúng tôi sẽ sử dụng chức năng này để xác định lại hành vi của toán tử “+”

Chẳng hạn, bạn có thể sử dụng toán tử “+” để cộng hai số

3 + 6

Hoặc để nối các chuỗi

'linux' + ' ' + 'gợi ý

Hoặc để nối các số với các chuỗi

1 + ' bài viết'

đầu ra

JavaScript tĩnh hay động

Tại thời điểm biên dịch, Toán tử “+” bị quá tải dựa trên loại dữ liệu chúng tôi đã sử dụng. Chẳng hạn, “3” + “6” tạo ra một số mới “9”, trong khi đó, “1” + “article” tạo ra chuỗi “1 article”. Đó là cách chúng tôi đã triển khai quá tải toán tử với sự trợ giúp của liên kết tĩnh

Nạp chồng hàm với Static Binding trong JavaScript

Nạp chồng hàm là một ví dụ khác về liên kết tĩnh trong đó nhiều hàm được định nghĩa có cùng tên nhưng có các tham số khác nhau. Lời gọi hàm liên kết chính nó với đúng chức năng dựa trên các đối số đã truyền tại thời điểm biên dịch

ví dụ 1. Nạp chồng hàm với Static Binding trong JavaScript

Trong Nạp chồng hàm, các phương thức được thêm vào có thể có cùng tên, nhưng để nạp chồng chúng, bạn phải truyền các đối số khác nhau, thay đổi kết quả tương ứng

Chẳng hạn, chúng ta đã tạo hai hàm có cùng tên. Hàm “show()” đầu tiên chấp nhận hai đối số, “x” và “y” và nó trả về tổng của chúng

chức năng hiển thị ( x ,y) {

 return x+y;

}

Hàm “show()” thứ hai sẽ chấp nhận và trả về đối số “z” đã truyền

chức năng hiển thị ( z ) { 
 return z;

}

Bây giờ, khi chúng ta chuyển các giá trị “3” và “5” làm đối số, lệnh gọi hàm “show(3,5)” sẽ liên kết chính nó với hàm show() đầu tiên, hàm chấp nhận có hai tham số, trong khi khi một đối số được chỉ định,

hiển thị (3,5);

đầu ra

JavaScript tĩnh hay động

hiển thị (2);

đầu ra

JavaScript tĩnh hay động

Trong ví dụ nêu trên, cả hai hàm “show()” được thêm vào đều bị ràng buộc về mặt thống kê tại thời điểm biên dịch. Kết quả là, sẽ không lãng phí thời gian để xác định chức năng nào cần gọi, dẫn đến việc thực thi chương trình nhanh chóng và hiệu quả

Bây giờ chúng ta sẽ tiếp tục và thảo luận về Dynamic Binding trong JavaScript

Liên kết động trong JavaScript

“Dynamic Binding” trong JavaScript là quá trình gán giá trị cho một biến hoặc gọi một hàm trong thời gian chạy. Nó còn được gọi là "Ràng buộc thời gian chạy" hoặc "Liên kết muộn" vì ràng buộc hàm gọi đến đúng hàm hoặc gán giá trị cho các biến tương ứng bị trì hoãn cho đến khi thời gian chạy

Liên kết động cho phép chương trình linh hoạt hơn bằng cách cho phép người dùng chọn chức năng nào sẽ được gọi và giá trị nào để gán cho một biến tại thời điểm thực hiện. Tuy nhiên, nó làm chậm quá trình thực thi vì tất cả thông tin đã chỉ định được gửi vào thời gian chạy

“Ghi đè phương thức” là một ví dụ tuyệt vời về việc sử dụng Liên kết động trong JavaScript

Ghi đè phương thức với Dynamic Binding trong JavaScript

Trong JavaScript, Ghi đè phương thức là một cơ chế cho phép một lớp con triển khai phương thức của lớp cha theo một cách khác. Theo cách này, lớp con sẽ ghi đè phương thức của lớp cha với sự trợ giúp của liên kết động

Thí dụ. Ghi đè phương thức với Dynamic Binding trong JavaScript

Trong ví dụ này, chúng ta sẽ ghi đè phương thức “speak()” của lớp “Birds” (cha). Với mục đích này, chúng ta sẽ định nghĩa thêm hai phương thức “speak()”, thứ nhất trong lớp “Cú” và thứ hai trong lớp “Pigeon”, sau đó gọi phương thức “speak()” của cả hai lớp con này

lớp Chim {

 biết nói () {

  console.log("Các loài chim có âm thanh khác nhau");

 }

}

class Owl extends Birds {

 speak() {

  console.log("Cú kêu Screeeeee");

 }

}

class Pigeon extends Birds {

 speak() {

  console.log("Chim bồ câu kêu coo COO coo");

 }

}

const owl = new Owl();

const pigeon = new Pigeon();

owl.nói();

chim bồ câu. nói();

Có thể thấy từ đầu ra bên dưới, phương thức speak() của lớp Birds bị các lớp con của nó ghi đè do Liên kết động

JavaScript tĩnh hay động

Đó là tất cả về Static vs Dynamic Binding trong JavaScript. Bạn có thể khám phá thêm chủ đề này theo yêu cầu của bạn

Sự kết luận

Liên kết tĩnh trong JavaScript xảy ra khi trình biên dịch nhận ra tất cả thông tin cần thiết liên quan đến việc gán giá trị biến hoặc gọi hàm ở giai đoạn biên dịch, trong khi Liên kết động đang gán giá trị cho biến hoặc gọi giá trị gọi hàm khi chạy- . Nạp chồng hàm và nạp chồng toán tử dựa trên Liên kết tĩnh và Ghi đè phương thức được coi là một ví dụ về Liên kết động. Bài viết này đã thảo luận về Liên kết tĩnh và Liên kết động trong JavaScript với sự trợ giúp của các ví dụ phù hợp

JavaScript có phải là loại tĩnh không?

JavaScript là ngôn ngữ được nhập động . Dưới đây là một ví dụ nhanh so sánh Java, một ngôn ngữ được nhập tĩnh, so với. JavaScript.

Tại sao JavaScript được gọi 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.

Tĩnh và động trong JavaScript là gì?

Liên kết tĩnh trong JavaScript xảy ra khi trình biên dịch nhận ra tất cả thông tin cần thiết liên quan đến việc gán giá trị biến hoặc gọi hàm ở giai đoạn biên dịch, trong khi Liên kết động đang gán giá trị cho biến hoặc gọi giá trị gọi hàm khi chạy-

JavaScript có hỗ trợ gõ độ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.