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

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

Jonathan Lam

16.3K15 Huy hiệu vàng66 Huy hiệu bạc90 Huy hiệu Đồng15 gold badges66 silver badges90 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 can you put a function in a function javascript? - bạn có thể đặt một hàm trong hàm javascript không?

Alexis

5.5611 Huy hiệu vàng29 Huy hiệu bạc44 Huy hiệu đồng1 gold badge29 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ạc1297 Huy hiệu đồng121 gold badges1180 silver badges1297 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 can you put a function in a function javascript? - bạn có thể đặt một hàm trong hàm javascript không?

Cяŝdk

30.7K7 Huy hiệu vàng54 Huy hiệu bạc75 Huy hiệu Đồng7 gold badges54 silver badges75 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 a function in a function javascript? - bạn có thể đặt mộ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 a function in a function javascript? - bạn có thể đặt một hàm trong hàm javascript không?

Sedat Polatsedat PolatSedat Polat

1.3042 huy hiệu vàng16 Huy hiệu bạc25 Huy hiệu đồng2 gold badges16 silver badges25 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 a function in a function javascript? - bạn có thể đặt một hàm trong hàm javascript không?

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

Nó là rất có thể. Bạn có thể làm bất cứ điều gì với các chức năng trong JavaScript vì đây là ngôn ngữ lập trình chức năng hạng nhất.

function add(x, y) {
  // we can define another function inside the add function to print our answer
  function print(ans) {
     console.log(ans)
  }
  const ans = x + y
  print(ans)
  return ans
}

add(1, 2)

Đã trả lời 11 giờ trước11 hours ago

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

Tôi có thể gọi một hàm bên trong một hàm khác trong javascript không?

Cách tiếp cận: Viết một chức năng bên trong một hàm khác.Thực hiện cuộc gọi đến hàm bên trong trong câu lệnh trả về của hàm bên ngoài.Gọi nó là niềm vui (a) (b) trong đó A là tham số ở bên ngoài và B là hàm bên trong.Make a call to the inner function in the return statement of the outer function. Call it fun(a)(b) where a is parameter to outer and b is to the inner function.

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ể có các chức năng lồng nhau trong JavaScript không?

Các chức năng lồng nhau của JavaScript Tất cả các chức năng đều có quyền truy cập vào phạm vi toàn cầu.Trên thực tế, trong JavaScript, tất cả các chức năng đều có quyền truy cập vào phạm vi "ở trên" chúng.JavaScript hỗ trợ các chức năng lồng nhau.JavaScript supports nested functions.

Một hàm có thể trả về một hàm javascript?

Các chức năng là cùng một dữ liệu với các số hoặc chuỗi, vì vậy các hàm có thể được truyền đến các chức năng khác như các đối số, cũng như được trả về từ các chức năng.Chúng ta thậm chí có thể xác định một hàm bên trong một chức năng khác và trả về bên ngoài.functions can be passed to other functions as arguments, as well as returned from functions. We can even define a function inside another function and return it outside.