Chúng ta có thể sử dụng hàm lồng nhau trong JavaScript không?
Trước JavaScript 1. 2, định nghĩa hàm chỉ được phép trong mã toàn cầu cấp cao nhất, nhưng JavaScript 1. 2 cũng cho phép các định nghĩa hàm được lồng trong các hàm khác. Tuy nhiên, có một hạn chế là định nghĩa hàm có thể không xuất hiện trong các vòng lặp hoặc điều kiện. Những hạn chế về định nghĩa hàm này chỉ áp dụng cho các khai báo hàm với câu lệnh hàm Show Như chúng ta sẽ thảo luận sau trong chương tiếp theo, các ký tự hàm (một tính năng khác được giới thiệu trong JavaScript 1. 2) có thể xuất hiện trong bất kỳ biểu thức JavaScript nào, có nghĩa là chúng có thể xuất hiện trong if và các câu lệnh khác Ví dụHãy thử ví dụ sau để tìm hiểu cách triển khai các hàm lồng nhau
đầu raNói chung, việc xác định một hàm bên trong một hàm khác là để xác định phạm vi của nó đối với hàm đó và bạn không thể gọi một hàm lồng nhau trong JavaScript
Bạn phải làm một cái gì đó bên trong chức năng bên ngoài để làm cho chức năng bên trong có sẵn bên ngoài nó. Bạn sẽ cần trả về lời gọi hàm bên trong
Và sau đó bạn có thể gọi hàm này đơn giản bằng cách gọi hàm 1 như thế này
Gọi hàm lồng nhau trong JavaScriptMã ví dụ đơn giản gọi hàm b() từ bên ngoài hàm a()
đầu ra Gọi hàm lồng nhau từ hàm bên ngoài Bạn không thể gọi nó từ bất kỳ nơi nào khác trừ khi bạn làm cho nó khả dụng bằng cách nào đó, chẳng hạn bằng cách gán nó cho một thuộc tính trên đối tượng bạn đang tạo bằng cách gọi 2 qua 3
Hãy bình luận nếu bạn có bất kỳ nghi ngờ hoặc đề xuất nào về chủ đề hàm JS này
Rohit Bằng cấp về Khoa học Máy tính và Kỹ sư. Nhà phát triển ứng dụng và có kinh nghiệm về nhiều ngôn ngữ lập trình. Đam mê công nghệ & thích học hỏi kỹ thuật Nếu bạn muốn chạy innerFunction thì sao? . Tuy nhiên, bạn có thể đánh giá giá trị trả về của hàm ngoài như vậy outerFunction(8)(5) // returns 13 Nó hoạt động như thế nào? . Nếu bạn sử dụng nhiều cặp dấu ngoặc đơn, bạn đang yêu cầu Javascript chạy một thứ gì đó nhiều lần. Trong ví dụ của chúng tôi, dấu ngoặc đơn đầu tiên chạy hàm bên ngoài, hàm này trả về một hàm khác. hàm bên trong (). Sau đó, cặp dấu ngoặc đơn thứ hai chạy hàm bên trong, chuyển bất kỳ đối số nào từ hàm ngoài sang hàm bên trong outerFunction(8)(5) // The first () returns innerFunction but doesn't run innerFunction. The second () runs innerFunction and passes innerFunction arguments 8 and 5. InnerFunction() then returns 13. Nếu bạn có một số chức năng lồng nhau thì sao? Chạy outsideFunction() sẽ trả về một đối tượng chứa tham chiếu đến 3 hàm. Việc chạy outsideFunction()() sẽ đưa ra một ngoại lệ vì bạn trả về một đối tượng trong lần đánh giá đầu tiên ("()" đầu tiên) và các đối tượng không thể được gọi hoặc chạy dưới dạng các hàm. Đánh giá thứ hai ("()") thứ hai sẽ cố chạy đối tượng như thể nó là một hàm.. nhưng các đối tượng không phải là hàm nên bạn gặp lỗi Vậy làm thế nào để chúng ta chạy một trong các chức năng lồng nhau đó? outerFunction(8).innerFunction(5) // returns 13 Như với bất kỳ đối tượng nào trong Javascript, bạn có thể sử dụng ký hiệu dấu chấm để lấy giá trị của bất kỳ khóa nào trong đối tượng. Trong trường hợp này, chúng tôi đã chỉ định InternalFunction sau đó thêm () để thực sự chạy InternalFunction Lưu ý rằng đối tượng được trả về bởi outsideFunction() không bao gồm privateFunction() 0Điều này có nghĩa là chúng ta không bao giờ có thể gọi trực tiếp privateFunction(). privateFunction() bị khóa trong một bao đóng và chỉ có thể được sử dụng từ bên trong outsideFunction() Tôi có thể có các hàm lồng nhau trong JavaScript không?JavaScript cho phép lồng các hàm và cấp cho hàm bên trong toàn quyền truy cập vào tất cả các biến và hàm được xác định bên trong hàm bên ngoài (và tất cả các biến và hàm khác mà hàm bên ngoài .
Khi nào sử dụng hàm lồng nhau trong JavaScript?Hàm lồng nhau
. Có thể dễ dàng làm điều này với JavaScript. Ở đây, hàm lồng nhau getFullName() được tạo để thuận tiện. Nó có thể truy cập các biến bên ngoài và do đó có thể trả về tên đầy đủ. when it is created inside another function. It is easily possible to do this with JavaScript. Here the nested function getFullName() is made for convenience. It can access the outer variables and so can return the full name.
Làm tổ trong JavaScript là gì?Lồng nhau là khi bạn viết nội dung nào đó bên trong nội dung khác . Bạn có thể có một chức năng bên trong một chức năng khác. function x() { function y() { // cái gì đó; . if (ánh sáng ban ngày) { if (trước 12 giờ) { // Trời sáng;
Một chức năng có thể được lồng nhau?Hàm lồng nhau là một hàm được chứa hoàn toàn trong hàm cha. Bất kỳ chức năng nào trong tệp chương trình đều có thể bao gồm chức năng lồng nhau . Sự khác biệt chính giữa các hàm lồng nhau và các loại hàm khác là chúng có thể truy cập và sửa đổi các biến được xác định trong hàm cha của chúng. |