Truyền đối số cho hàm khác javascript
Trong JavaScript, các chức năng được coi là công dân hạng nhất. Chúng ta có thể coi các hàm là các giá trị và gán chúng cho một biến khác, chuyển chúng làm đối số cho một hàm khác hoặc thậm chí trả về chúng từ một hàm khác Show
Khả năng các hàm này hoạt động như các hàm hạng nhất là thứ cung cấp năng lượng cho các hàm bậc cao hơn trong JavaScript Về cơ bản, một hàm lấy một hàm khác làm đối số hoặc trả về một hàm được gọi là hàm bậc cao hơn Hãy đi sâu một chút để xem cả hai loại thực hiện, đó là
Cách truyền một hàm làm đối số cho một hàm khácTrong phần này, chúng ta sẽ xem cách chúng ta có thể gửi một hàm dưới dạng đối số và cuối cùng là cách nó giúp chúng ta viết mã sạch hơn Xem xét đoạn mã sau mà chúng ta muốn tạo một hàm chấp nhận một mảng làm đối số. Nó lọc ra tất cả các số lẻ từ nó và trả về tất cả các số đã lọc Chức năng sẽ trông giống như thế này
Hàm trên trả về mảng đã lọc 8 trong đó chúng tôi có tất cả các số lẻ, như mong đợiBây giờ, giả sử chúng ta cũng muốn tạo một hàm lọc ra và trả về tất cả các số chẵn. Chúng ta rất có thể tiếp tục và tạo chức năng sau để đạt được điều này
Một lần nữa, như mong đợi, chúng ta sẽ nhận được đầu ra mong muốn của một mảng với tất cả các số chẵn trong đó – 9Nhưng lưu ý rằng chúng tôi đang viết rất nhiều mã trùng lặp theo cách tiếp cận này. Cả hai hàm trên đều thực hiện rất nhiều việc chung, chẳng hạn như chấp nhận mảng ban đầu, tạo một mảng mới để lưu trữ mảng đã lọc, lặp qua toàn bộ mảng chính và cuối cùng trả về mảng đã lọc Sự khác biệt duy nhất giữa cả hai chức năng là logic mà chúng sử dụng để lọc ra mảng ban đầu Đối với hàm 0, chúng ta sử dụng logic của 1 trong khi ở hàm 2, chúng ta sử dụng logic 3 để lọc ra mảng ban đầuĐây là nơi chúng ta có thể hưởng lợi từ việc sử dụng các hàm bậc cao hơn. Mục đích chính là tạo một hàm để thực hiện tất cả những thứ chung mà chúng ta đã làm trong hai hàm trên và chuyển riêng phần logic làm đối số cho hàm này. Hãy xem làm thế nào chúng ta có thể thực hiện điều này Hãy tạo hàm thực hiện tất cả những nội dung phổ biến mà chúng ta đã thực hiện trong hàm 0 và 2. Điều này sẽ đi một cái gì đó như thế này
Bỏ qua tham số 6 ngay bây giờ. Lưu ý rằng trong phiên bản 7 mới, chúng ta giữ tất cả các bước chung, đó là chấp nhận mảng ban đầu, tạo một mảng mới để lưu trữ mảng đã lọc, lặp qua toàn bộ mảng chính và cuối cùng trả về mảng đã lọc mà chúng ta đã thực hiện trong 0 Bây giờ, tham số 6 về cơ bản chấp nhận logic sẽ không là gì ngoài một hàm khác chứa logic lọc. Để lọc các số lẻ và số chẵn tương ứng, đây là các hàm logic chúng ta cần viết 6Đó là nó. Bây giờ chúng ta chỉ cần truyền mảng chính, cùng với hàm logic cho 61 của chúng ta như thế này 8Bằng cách này, chúng tôi đang chuyển các hàm logic như 62 hoặc 63 làm đối số cho một hàm khác 61Về cơ bản, chúng tôi đang trừu tượng hóa logic lọc chính từ chức năng chính. Giờ đây, chúng tôi có thể chuyển bất kỳ logic lọc nào khác mà chúng tôi muốn tới 61 mà không cần thay đổi nóVí dụ chúng ta muốn lọc ra một số lớn hơn 5 thì chỉ cần viết logic lọc như sau 3và chuyển nó làm đối số cho 61 5Chúng ta cũng có thể truyền hàm logic dưới dạng hàm mũi tên và nhận được kết quả tương tự – nghĩa là, truyền 67 thay cho 68 sẽ cho chúng ta kết quả tương tự 8Cách tạo PolyfillChúng ta biết rằng JavaScript cung cấp cho chúng ta một số hàm bậc cao có sẵn như 69, 80, 81, v.v. Chúng ta có thể tạo lại việc thực hiện các chức năng này của riêng mình không? Chúng tôi đã tạo chức năng lọc của mình trong phần trên. Hãy tạo nguyên mẫu mảng của hàm 61 để chúng ta có thể sử dụng nó với bất kỳ mảng nào. Điều này sẽ trông giống như thế này 3Trong đoạn mã trên, 83 đề cập đến mảng mà nguyên mẫu được gọi. Vì vậy, nếu chúng ta viết một cái gì đó như 5thì 83 sẽ tham chiếu đến mảng 85Bây giờ chúng ta có thể sử dụng 61 giống như chúng ta sử dụng hàm 80 có sẵn trong JS. Chúng ta có thể viết một cái gì đó như thế này 0tương tự như gọi hàm 80 sẵn có 1Cả hai lệnh gọi hàm trên (tức là 89 và 30) sẽ cho chúng ta cùng một đầu ra, chẳng hạn như 9Tương tự, chúng ta cũng có thể chuyển một hàm mũi tên trong triển khai nguyên mẫu của mình vì chúng ta có thể chuyển vào hàm 80 có sẵn 2Theo một cách nào đó, chúng tôi đã viết một polyfill cho hàm 80 sẵn cóChuỗi chức năngChúng tôi cũng có thể triển khai chức năng xâu chuỗi với triển khai nguyên mẫu của mình giống như chúng tôi có thể thực hiện với chức năng 80 sẵn có. Trước tiên hãy lọc ra tất cả các số lớn hơn 5. Sau đó từ kết quả ta sẽ lọc ra toàn các số chẵn. Nó sẽ trông giống như thế này 3Đây là cách chúng ta có thể sử dụng các hàm bậc cao hơn trong JS để viết mã theo chế độ mô-đun, sạch hơn và dễ bảo trì hơn Tiếp theo, hãy xem cách chúng ta có thể trả về một hàm từ một hàm khác Cách trả về một hàm từ một hàm khác trong JavaScriptChúng ta có thể trả về một hàm từ một hàm khác vì chúng ta coi các hàm trong JavaScript là các giá trị. Hãy xem điều này thông qua một ví dụ 4Trong đoạn mã trên, khi chúng ta gọi hàm 35 với một đối số, nó sẽ bật đối số đó và cuối cùng trả về một hàm ẩn danh. Vì vậy, nếu chúng ta gọi hàm 36 và lưu trữ kết quả của nó trong một biến và bảng điều khiển ghi nhật ký, chúng ta sẽ nhận được đầu ra sau 5Bạn có thể thấy rằng 37 chứa một hàm ẩn danh mà hàm 36 đã trả vềCó hai cách để gọi hàm bên trong này mà chúng ta sẽ khám phá ngay bây giờ Gọi hàm trả về bằng cách sử dụng một biếnTrong phương thức này, chúng tôi đã lưu trữ hàm trả về trong một biến như được hiển thị ở trên và sau đó gọi biến đó để lần lượt gọi hàm bên trong Hãy xem nó trong mã 6Vậy chúng ta sẽ làm gì ở đây?
Gọi hàm trả về bằng cách sử dụng dấu ngoặc képĐây là một cách rất phức tạp để gọi hàm trả về bên trong. Chúng tôi sử dụng dấu ngoặc kép 53 trong phương pháp nàyHãy xem nó trong mã 7Bạn có thể nghĩ về điều này theo cách tương tự như ví dụ về chuỗi của chúng tôi ở trên. Chỉ là thay vì xâu chuỗi các hàm, chúng ta xâu chuỗi các đối số Các đối số trong cặp ngoặc đơn đầu tiên thuộc về hàm bên ngoài, trong khi các đối số trong cặp ngoặc đơn thứ hai thuộc về hàm trả về bên trong Phương thức 36 trả về một hàm như đã giải thích trước đó và hàm được trả về đó được gọi ngay lập tức bằng cách sử dụng dấu ngoặc đơn thứ haiNhư tôi đã đề cập ở trên, đây là một cách rất phức tạp để gọi hàm. Nhưng một khi bạn hiểu rõ về nó, nó sẽ trở thành. cũng khá tự nhiên Một nơi mà chúng ta có thể thấy loại ký hiệu dấu ngoặc kép này là trong phương thức 55 trong thư viện quản lý trạng thái 56. Bạn có thể đọc thêm về 55 tại đâyTóm lượcTrong bài viết này, chúng ta đã học
Gói (lạiCảm ơn vì đã đọc. Tôi thực sự hy vọng bạn thấy bài viết về hàm bậc cao này hữu ích. Hãy theo dõi để biết thêm nội dung tuyệt vời. hòa bình ra. 🖖 đường liên kết mạng xã hội
QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO SDE 2 @ Mastercard • IIT Kanpur • Tech Blogger Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu Làm cách nào để chuyển một giá trị từ hàm này sang hàm khác trong JavaScript?Khi có nhiều chức năng (hầu hết thời gian), cần có một cách để truyền dữ liệu giữa các chức năng. Điều này được thực hiện bằng cách chuyển các giá trị trong ngoặc đơn. myFunction(myData) . Ngay cả khi không có dữ liệu nào được truyền vào, chúng ta vẫn phải khai báo và thực thi các hàm bằng cách sử dụng dấu ngoặc đơn. myFunction().
Làm cách nào để chuyển nhiều đối số trong hàm JavaScript?Khi bạn gọi một hàm trong JavaScript, bạn có thể chuyển vào bất kỳ số lượng đối số nào, bất kể khai báo hàm chỉ định điều gì . Không có giới hạn tham số chức năng. Trong hàm trên, nếu chúng ta truyền vào bao nhiêu đối số thì kết quả luôn giống nhau vì nó chỉ nhận 2 tham số đầu tiên.
Tôi có thể sử dụng hàm làm đối số trong JavaScript không?Việc truyền một hàm làm đối số cho hàm khá giống với việc truyền biến làm đối số cho hàm . vì vậy các biến có thể được trả về từ một hàm.
Đối số chuyển qua trong JavaScript là gì?Các đối số được truyền theo giá trị
. Các đối số JavaScript được truyền theo giá trị. Hàm chỉ biết các giá trị, không biết vị trí của đối số. Nếu một hàm thay đổi giá trị của đối số, thì nó không thay đổi giá trị ban đầu của tham số. |