Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

Tôi tự hỏi liệu JavaScript có hỗ trợ viết một hàm trong một hàm khác hay các chức năng lồng nhau không (tôi đọc nó trong một blog). Điều này có thực sự có thể không?. Trong thực tế, tôi đã sử dụng những thứ này nhưng không chắc chắn về khái niệm này. Tôi thực sự không rõ ràng về điều này - xin vui lòng giúp đỡ!

Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

Jonathan Lam

16.3K15 Huy hiệu vàng66 Huy hiệu bạc89 Huy hiệu đồng15 gold badges66 silver badges89 bronze badges

hỏi ngày 9 tháng 7 năm 2010 lúc 12:19Jul 9, 2010 at 12:19

Thiên nga thiên nga đỏRed Swan

14.8K43 Huy hiệu vàng154 Huy hiệu bạc236 Huy hiệu đồng43 gold badges154 silver badges236 bronze badges

Điều này có thực sự có thể.

Yes.

function a(x) {    // <-- function
  function b(y) { // <-- inner function
    return x + y; // <-- use variables from outer scope
  }
  return b;       // <-- you can even return a function.
}
console.log(a(3)(4));

Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

Alexis

5.5611 Huy hiệu vàng28 Huy hiệu bạc44 Huy hiệu đồng1 gold badge28 silver badges44 bronze badges

Đã trả lời ngày 9 tháng 7 năm 2010 lúc 12:24Jul 9, 2010 at 12:24

Kennytmkennytmkennytm

500K101 Huy hiệu vàng1064 Huy hiệu bạc995 Huy hiệu Đồng101 gold badges1064 silver badges995 bronze badges

3

Sau đây là khó chịu, nhưng phục vụ để chứng minh làm thế nào bạn có thể xử lý các chức năng như bất kỳ loại đối tượng nào khác.

var foo = function () { alert('default function'); }

function pickAFunction(a_or_b) {
    var funcs = {
        a: function () {
            alert('a');
        },
        b: function () {
            alert('b');
        }
    };
    foo = funcs[a_or_b];
}

foo();
pickAFunction('a');
foo();
pickAFunction('b');
foo();

Đã trả lời ngày 9 tháng 7 năm 2010 lúc 12:23Jul 9, 2010 at 12:23

QuentinentinQuentin

882K121 Huy hiệu vàng1180 Huy hiệu bạc1294 Huy hiệu đồng121 gold badges1180 silver badges1294 bronze badges

2

Các chức năng là các đối tượng hạng nhất có thể là:

  • Được xác định trong chức năng của bạn
  • Được tạo giống như bất kỳ biến hoặc đối tượng nào khác tại bất kỳ điểm nào trong chức năng của bạn
  • Trở về từ chức năng của bạn (có vẻ rõ ràng sau hai cái ở trên, nhưng vẫn vậy)

Để xây dựng ví dụ được đưa ra bởi Kenny:

   function a(x) {
      var w = function b(y) {
        return x + y;
      }
      return w;
   };

   var returnedFunction = a(3);
   alert(returnedFunction(2));

Sẽ cảnh báo bạn với 5.

Đã trả lời ngày 9 tháng 7 năm 2010 lúc 12:30Jul 9, 2010 at 12:30

1

Có, có thể viết và gọi một hàm lồng nhau trong một hàm khác.

Thử cái này:

function A(){
   B(); //call should be B();
   function B(){

   }
}

Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

Cяŝdk

30.7K7 Huy hiệu vàng54 Huy hiệu bạc74 Huy hiệu đồng7 gold badges54 silver badges74 bronze badges

Đã trả lời ngày 19 tháng 3 năm 2014 lúc 14:41Mar 19, 2014 at 14:41

user3261767user3261767user3261767

2173 Huy hiệu bạc3 Huy hiệu Đồng3 silver badges3 bronze badges

Bạn không chỉ có thể trả lại một hàm mà bạn đã chuyển vào một hàm khác như một biến, bạn cũng có thể sử dụng nó để tính toán bên trong mà xác định nó bên ngoài. Xem ví dụ này:

    function calculate(a,b,fn) {
      var c = a * 3 + b + fn(a,b);
      return  c;
    }

    function sum(a,b) {
      return a+b;
    }

    function product(a,b) {
      return a*b;
    }

    document.write(calculate (10,20,sum)); //80
    document.write(calculate (10,20,product)); //250

Đã trả lời ngày 29 tháng 11 năm 2013 lúc 0:13Nov 29, 2013 at 0:13

Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

0

Một giải pháp thay thế với ES6 cho các câu trả lời khác:

const currying = (x) => (y)=> x + y;
console.log(currying(5)(3));

sẽ in ra console: 8

Đã trả lời ngày 13 tháng 11 năm 2021 lúc 19:14Nov 13, 2021 at 19:14

Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

Sedat Polatsedat PolatSedat Polat

1.2842 Huy hiệu vàng15 Huy hiệu bạc24 Huy hiệu đồng2 gold badges15 silver badges24 bronze badges

1

function calculate(num1) {
   // arrow function
   return (num2) => num1 + num2;
}

// Invoke the function
console.log(calculate(4)(6));

Đã trả lời ngày 21 tháng 2 lúc 10:45Feb 21 at 10:45

Hướng dẫn how do you make a function inside a function in javascript? - làm thế nào để bạn tạo một hàm bên trong một hàm trong javascript?

Bạn có thể tạo một chức năng bên trong một hàm không?

Nếu bạn xác định một hàm bên trong một hàm khác, thì bạn sẽ tạo hàm bên trong, còn được gọi là hàm lồng nhau.Trong Python, các hàm bên trong có quyền truy cập trực tiếp vào các biến và tên mà bạn xác định trong hàm kèm theo., also known as a nested function. In Python, inner functions have direct access to the variables and names that you define in the enclosing function.

Làm thế nào để bạn tạo một chức năng trong hàm javascript?

Hàm JavaScript được xác định với từ khóa chức năng, theo sau là tên, theo sau là dấu ngoặc đơn ().Tên chức năng có thể chứa các chữ cái, chữ số, dấu gạch dưới và dấu hiệu đô la (cùng quy tắc với các biến).Các 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, ...). Function names can contain letters, digits, underscores, and dollar signs (same rules as variables). The parentheses may include parameter names separated by commas: (parameter1, parameter2, ...)

Làm thế nào để bạn gọi một hàm từ một hàm khác trong javascript?

Để gọi một hàm bên trong một hàm khác, hãy xác định hàm bên trong hàm bên ngoài và gọi nó.Khi sử dụng từ khóa chức năng, hàm được nâng lên trên cùng của phạm vi và có thể được gọi từ bất cứ nơi nào bên trong hàm bên ngoài.define the inner function inside the outer function and invoke it. When using the function keyword, the function gets hoisted to the top of the scope and can be called from anywhere inside of the outer function.