Các cách khác nhau để xác định hàm trong JavaScript là gì?

Hàm là một trong những thành phần quan trọng trong lập trình. Chúng được định nghĩa để thực hiện một tác vụ cụ thể và có thể được gọi đi gọi lại để thực thi. Sự khác biệt chính giữa các hàm trong Javascript và các ngôn ngữ lập trình khác là trong javascript, các hàm thuộc đối tượng hạng nhất, có nghĩa là chúng hoạt động giống như các đối tượng và có thể được gán cho các biến, mảng và các đối tượng khác

Bài đăng này thảo luận về ba cách khác nhau để xác định chức năng

  1. Khai báo hàm
  2. Biểu thức hàm
  3. Chức năng máy phát điện

1. Khai báo hàm

Có lẽ là cách phổ biến nhất để khai báo một hàm. Hãy nhìn vào cú pháp của nó

Cú pháp khai báo hàm

Khai báo hàm bao gồm từ khóa function theo sau là tên bắt buộc của hàm và sau đó là tham số trong một cặp dấu ngoặc đơn (bạn cũng có thể định nghĩa một hàm mà không cần đối số). Cuối cùng, trong một cặp dấu ngoặc nhọn là phần thân của hàm, hàm thực hiện một tác vụ thực tế

Điều quan trọng là bạn phải biết sự khác biệt giữa tham số và đối số của hàm. Một tham số là một biến khi xác định một chức năng. Khi một hàm được gọi, các đối số là dữ liệu thực tế mà bạn chuyển vào các tham số của hàm

Đầu tiên, hãy xem một ví dụ đơn giản

Một hàm có tên hello được khai báo với một đối số name, ghi lại một thông báo trong bảng điều khiển. Như bạn có thể thấy từ ví dụ, vì không có loại nào được chỉ định trên đối số nên nó hoạt động cho cả chuỗi và số. Nhưng nếu tôi chỉ muốn chức năng của mình chào một tên chứ không phải một số thì sao?

Theo mặc định, các chức năng trả về không xác định. Để trả về bất kỳ giá trị nào khác, hàm phải có câu lệnh return chỉ định giá trị sẽ trả về

Hoisting trong Khai báo hàm là gì?

Nói một cách đơn giản, điều đó có nghĩa là bất kể bạn khai báo các hàm hoặc biến ở đâu khi mã được thực thi, chúng sẽ được chuyển lên đầu phạm vi của chúng. Điều này được gọi là cẩu

Hãy xem một ví dụ

cẩu trong khai báo hàm

Ở đây tôi đã gọi hàm trước khi tôi tuyên bố - đây là hoisting

2. Biểu thức hàm

Một biểu thức hàm rất giống và có cú pháp gần giống như một câu lệnh hàm. Sự khác biệt chính là một biểu thức hàm không bắt đầu bằng từ khóa functionname của hàm cũng là tùy chọn, trong trường hợp đó, nó trở thành Hàm ẩn danh. Nếu hàm có name thì nó được gọi là Biểu thức hàm được đặt tên

Ví dụ biểu thức hàm

Bây giờ hãy xem cách ẩn danh để xác định chức năng trên

Biểu thức hàm ẩn danh

Một điểm khác biệt quan trọng giữa Khai báo hàm và Biểu thức hàm là không có cẩu trong Biểu thức hàm. Nếu bạn thử chương trình tương tự như chương trình trong Khai báo chức năng cẩu, bạn sẽ gặp lỗi

Không nâng trong biểu thức chức năng

IIFE (Biểu thức hàm được gọi ngay lập tức)

Điều này có nghĩa là hàm chạy ngay khi nó được định nghĩa, ở đây biểu thức hàm được đặt trong Grouping Operator(),

Tại sao chúng ta cần một IIFE trong biểu thức chức năng điển hình của mình? . Nó được thực thi ngay lập tức và không bao giờ trong tương lai nó được chương trình truy cập lại. Vì nó không được gọi lại nên nó không cần tên, vì vậy biểu thức hàm ẩn danh được ưu tiên cho IIFE

3. Chức năng máy phát điện

Các chức năng bình thường tuân theo mô hình chạy đến khi hoàn thành và không thể dừng trước khi thực hiện dòng cuối cùng. Nếu bạn muốn thoát giữa chừng, bạn phải quay lại hoặc đưa ra lỗi

Chức năng Trình tạo có thể bị dừng giữa chừng khi thực hiện. Khi nó được gọi lại, nó tiếp tục từ nơi nó dừng lại

Nó được khai báo giống như một hàm bình thường nhưng với sự khác biệt là hàm tạo có dấu hoa thị * sau từ khóa function và bất kỳ khoảng trắng nào cũng có thể được bao gồm giữa chúng

Một điều nữa cần lưu ý. trong JavaScript, trình tạo là một hàm trả về một đối tượng mà bạn có thể gọi next(). Mọi lời gọi của next() sẽ trả về một đối tượng có cấu trúc như thế này

Bây giờ, đối tượng này có hai thuộc tính. hello0 và hello1. hello2 là giá trị thực của đối tượng, trong khi đó hello1 là thuộc tính chỉ định việc kết thúc hàm — giá trị mặc định là false và khi nó trở thành true, hàm sẽ dừng

Hãy hiểu nó tốt hơn với một ví dụ đơn giản

Bên trong thân hàm, chúng tôi không sử dụng từ khóa return — thay vào đó sử dụng hello4, nếu sử dụng hello5, nó sẽ thay đổi thuộc tính hello1 thành hello7 và hàm sẽ kết thúc — mọi thứ sau nó sẽ không thực thi. hello8 đưa ra giá trị được gán cho nó

Đầu tiên, chúng ta xác định hàm của mình sau đó chúng ta gọi nó, việc gọi hàm tạo dẫn đến một đối tượng trình tạo được lưu trữ trong biến gen

Sau đó, chúng tôi gọi đối tượng bằng cách sử dụng thuộc tính next()hello0,

Lần đầu tiên next() được sử dụng, việc thực thi chức năng bắt đầu. Đầu tiên nó chạy console. log (“Người đầu tiên thực thi”) và ghi nhật ký vào bảng điều khiển, sau đó nó gặp name2— trả về giá trị “tạm dừng” và quá trình thực thi dừng lại

Lần thứ hai next() được gọi, nó bắt đầu từ nơi nó rời đi lần trước. Một lần nữa, đầu tiên nó chạy name4 và sau đó gặp name2 và cho ra giá trị “kết thúc chức năng”, sau đó chức năng dừng lại

Lần thứ ba next() được gọi, undefined được xem là kết quả. Điều này xảy ra bởi vì một đối tượng được tạo từ hàm trình tạo chỉ có thể được lặp lại một lần - đối tượng hiện không còn tác dụng và một đối tượng mới phải được tạo để chương trình bắt đầu lại

Nếu tôi sử dụng_______2_______7 thay vì name8, giá trị của dữ liệu được thay đổi thành name9 và không có gì được thực thi sau đó

Trình tạo khi kết hợp với Lời hứa là một công cụ rất mạnh để lập trình không đồng bộ. Chúng giảm thiểu, nếu không muốn nói là loại bỏ hoàn toàn, các vấn đề với lệnh gọi lại

Phần kết luận. Cách nào tốt hơn?

Chà, chúng ta không thể so sánh chúng và nói cái này tốt hơn cái kia - kiểu tuyên bố tùy thuộc vào tình huống hoặc điều kiện

Bạn có thể sử dụng Hàm tạo để có chức năng Async tốt hơn và Biểu thức hàm ẩn danh cho chức năng bạn muốn thực thi ngay lập tức

Các cách khác nhau để xác định một chức năng là gì?

Một hàm được định nghĩa là mối quan hệ giữa một tập hợp các đầu vào có một đầu ra mỗi . Nói một cách đơn giản, hàm là mối quan hệ giữa các đầu vào trong đó mỗi đầu vào liên quan đến chính xác một đầu ra. Mỗi chức năng có một tên miền và tên miền hoặc phạm vi. Một hàm thường được ký hiệu là f(x) trong đó x là đầu vào.

Cách chính xác để xác định hàm trong JavaScript là gì?

Một hàm JavaScript được xác định bằng từ khóa hàm, theo sau là tên, theo sau là dấu ngoặc đơn () . Tên hàm có thể chứa các chữ cái, chữ số, dấu gạch dưới và ký hiệu đô la (quy tắc giống như biến). Dấu ngoặc đơn có thể bao gồm các tên tham số được phân tách bằng dấu phẩy. (tham số1, tham số2,. )

Có bao nhiêu cách bạn có thể khai báo một hàm trong JavaScript?

Có 4 cách để tạo một hàm trong JavaScript. .
Một chức năng như một tuyên bố
Một chức năng như một biểu thức
Một chức năng như một chức năng mũi tên
Một hàm được tạo bằng hàm tạo Hàm

3 loại chức năng trong JavaScript là gì?

Đối với mỗi loại chức năng, có ba cách để xác định nó. Khai báo . hàm, hàm*, hàm không đồng bộ, hàm không đồng bộ*