Hướng dẫn can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

134

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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 can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

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

Đ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 can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

Alexis

5.5511 Huy hiệu vàng28 Huy hiệu bạc43 Huy hiệu đồng1 gold badge28 silver badges43 bronze badges

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

Kennytmkennytmkennytm

499K101 Huy hiệu vàng1062 Huy hiệu bạc994 Huy hiệu đồng101 gold badges1062 silver badges994 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

879K121 Huy hiệu vàng1177 Huy hiệu bạc1289 Huy hiệu đồng121 gold badges1177 silver badges1289 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

CGPCGPcgp

40.7K11 Huy hiệu vàng100 Huy hiệu bạc131 Huy hiệu Đồng11 gold badges100 silver badges131 bronze badges

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 can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

Cяŝdk

30.6K7 Huy hiệu vàng54 Huy hiệu bạc73 Huy hiệu đồng7 gold badges54 silver badges73 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 can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

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 can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

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 can you put function in function javascript? - bạn có thể đặt hàm trong hàm javascript không?

Bạn có thể đặt một chức năng bên trong một chức nă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.. In Python, inner functions have direct access to the variables and names that you define in the enclosing function.

Chúng ta có thể chuyển một hàm cho một chức năng khác trong JavaScript không?

Các chức năng trong mô hình lập trình chức năng có thể được chuyển cho các chức năng khác dưới dạng tham số.Các chức năng này được gọi là gọi lại.Các hàm gọi lại có thể được truyền dưới dạng đối số bằng cách truyền trực tiếp tên của hàm và không liên quan đến chúng.. These functions are called callbacks. Callback functions can be passed as arguments by directly passing the function's name and not involving them.