Hướng dẫn write a javascript program to pass a javascript function as parameter - viết một chương trình javascript để chuyển một hàm javascript làm tham số

Ví dụ: Chức năng là tham số

// program to pass a function as a parameter

function greet[] {
    return 'Hello';
}

// passing function greet[] as a parameter
function name[user, func]
{

    // accessing passed function
    const message = func[];

    console.log[`${message} ${user}`];
}

name['John', greet];
name['Jack', greet];
name['Sara', greet];

Đầu ra

Hello John
Hello Jack
Hello Sara

Trong chương trình trên, có hai chức năng:

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

4 và
function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

5.

  • Hàm
    function addStudent[id, refreshCallback]
    {
        refreshCallback[];  
    }
    
    function refreshStudentList[] {
        console.log['Hello'];
    }
    
    addStudent[1, refreshStudentList];
    
    
    4 có hai tham số.
  • Hàm
    function addStudent[id, refreshCallback]
    {
        refreshCallback[];  
    }
    
    function refreshStudentList[] {
        console.log['Hello'];
    }
    
    addStudent[1, refreshStudentList];
    
    
    5 được truyền như một đối số cho hàm
    function addStudent[id, refreshCallback]
    {
        refreshCallback[];  
    }
    
    function refreshStudentList[] {
        console.log['Hello'];
    }
    
    addStudent[1, refreshStudentList];
    
    
    4.

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:50:50 [UTC/GMT +8 giờ]

Chức năng JavaScript: Bài tập-28 với giải pháp

Viết chương trình JavaScript để vượt qua 'Hàm JavaScript' làm tham số.

Giải pháp mẫu: - -

Mã HTML:




  
  JavaScript program to pass a JavaScript function as parameter






Mã JavaScript:

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

Output:

Hello

Flowchart:

Bản thử trực tiếp:

Xem PEN JavaScript- Truyền hàm JavaScript dưới dạng tham số-function-ex- 28 của W3Resource [@w3resource] trên CodePen.

Cải thiện giải pháp mẫu này và đăng mã của bạn thông qua Disqus

Trước đây: Viết hàm JavaScript trả về palindrom dài nhất trong một chuỗi đã cho.Write a JavaScript function that returns the longest palindrome in a given string.
Next: Write a JavaScript function to get the function name.

JavaScript: Lời khuyên trong ngày

Đối tượng hứa hẹn

const myPromise = [] => Promise.resolve['I have resolved!'];

function firstFunction[] {
  myPromise[].then[res => console.log[res]];
  console.log['second'];
}

async function secondFunction[] {
  console.log[await myPromise[]];
  console.log['second'];
}

firstFunction[];
secondFunction[];

Với một lời hứa, về cơ bản chúng tôi nói rằng tôi muốn thực hiện chức năng này, nhưng tôi sẽ đặt nó sang một bên trong khi nó đang chạy vì điều này có thể mất một lúc. Chỉ khi một giá trị nhất định được giải quyết [hoặc bị từ chối] và khi ngăn xếp cuộc gọi trống, tôi muốn sử dụng giá trị này. Chúng ta có thể nhận được giá trị này với cả. Sau đó và từ khóa đang chờ đợi trong một hàm Async. Mặc dù chúng ta có thể nhận được giá trị của một lời hứa với cả. Sau đó và chờ đợi, nhưng chúng hoạt động hơi khác một chút. Trong FirstFunction, chúng tôi [loại] đặt hàm myPromise sang một bên trong khi nó đang chạy, nhưng tiếp tục chạy mã khác, đó là console.log ['thứ hai'] trong trường hợp này. Sau đó, chức năng được giải quyết với chuỗi tôi đã giải quyết, sau đó được ghi lại sau khi nó thấy rằng Callstack trống. Với từ khóa đang chờ đợi trong SecondFunction, chúng tôi thực sự tạm dừng việc thực hiện hàm async cho đến khi giá trị đã được giải quyết trước khi chuyển sang dòng tiếp theo. Điều này có nghĩa là nó đã chờ đợi MyPromise giải quyết với giá trị tôi đã giải quyết và chỉ một khi điều đó xảy ra, chúng tôi đã chuyển sang dòng tiếp theo: thứ hai được ghi lại.
We can get this value with both .then and the await keyword in an async function. Although we can get a promise's value with both .then and await, they work a bit differently.
In the firstFunction, we [sort of] put the myPromise function aside while it was running, but continued running the other code, which is console.log['second'] in this case. Then, the function resolved with the string I have resolved, which then got logged after it saw that the callstack was empty.
With the await keyword in secondFunction, we literally pause the execution of an async function until the value has been resolved before moving to the next line.
This means that it waited for the myPromise to resolve with the value I have resolved, and only once that happened, we moved to the next line: second got logged.

Tham khảo: //bit.ly/3jfrbje

817

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.

Làm cách nào để truyền hàm dưới dạng tham số mà không có chức năng thực thi trong hàm "cha mẹ" hoặc sử dụng

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

9? [Vì tôi đã đọc rằng nó không an toàn.]

Tôi có cái này:

addContact[entityId, refreshContactList[]];

Nó hoạt động, nhưng vấn đề là

Hello
0 bắn khi hàm được gọi, thay vì khi nó được sử dụng trong hàm.

Tôi có thể đi xung quanh nó bằng cách sử dụng

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

9, nhưng đó không phải là cách thực hành tốt nhất, theo những gì tôi đã đọc. Làm thế nào tôi có thể chuyển một hàm dưới dạng tham số trong JavaScript?

Nic

6.0989 Huy hiệu vàng47 Huy hiệu bạc67 Huy hiệu Đồng9 gold badges47 silver badges67 bronze badges

Hỏi ngày 8 tháng 11 năm 2012 lúc 9:34Nov 8, 2012 at 9:34

imperium2335imperium2335imperium2335

22.5K38 Huy hiệu vàng107 Huy hiệu bạc186 Huy hiệu Đồng38 gold badges107 silver badges186 bronze badges

0

Bạn chỉ cần loại bỏ dấu ngoặc đơn:

addContact[entityId, refreshContactList];

Điều này sau đó chuyển chức năng mà không thực hiện nó trước.

Đây là một ví dụ:

function addContact[id, refreshCallback] {
    refreshCallback[];
    // You can also pass arguments if you need to
    // refreshCallback[id];
}

function refreshContactList[] {
    alert['Hello World'];
}

addContact[1, refreshContactList];

Đã trả lời ngày 8 tháng 11 năm 2012 lúc 9:34Nov 8, 2012 at 9:34

9

Nếu bạn muốn truyền một hàm, chỉ cần tham khảo nó theo tên mà không có dấu ngoặc đơn:

function foo[x] {
    alert[x];
}
function bar[func] {
    func["Hello World!"];
}

//alerts "Hello World!"
bar[foo];

Nhưng đôi khi bạn có thể muốn vượt qua một chức năng với các đối số bao gồm, nhưng không được gọi cho đến khi gọi lại. Để làm điều này, khi gọi nó, chỉ cần bọc nó trong một chức năng ẩn danh, như thế này:

Hello John
Hello Jack
Hello Sara
0

Nếu bạn thích, bạn cũng có thể sử dụng chức năng áp dụng và có tham số thứ ba là một mảng của các đối số, giống như như vậy:

Hello John
Hello Jack
Hello Sara
1

Đã trả lời ngày 6 tháng 6 năm 2014 lúc 23:11Jun 6, 2014 at 23:11

Dallindallindallin

8.2002 huy hiệu vàng34 Huy hiệu bạc40 Huy hiệu đồng2 gold badges34 silver badges40 bronze badges

4

Ví dụ 1:

Hello John
Hello Jack
Hello Sara
2

Ví dụ 2:

Hello John
Hello Jack
Hello Sara
3

Nhìn vào điều này

Đã trả lời ngày 8 tháng 11 năm 2012 lúc 9:38Nov 8, 2012 at 9:38

GaddegaddeGadde

1.45115 huy hiệu bạc37 Huy hiệu đồng15 silver badges37 bronze badges

1

Để chuyển chức năng dưới dạng tham số, chỉ cần xóa dấu ngoặc!

Hello John
Hello Jack
Hello Sara
4

Ý tưởng đằng sau điều này là một hàm khá giống với một biến. Thay vì viết

Hello John
Hello Jack
Hello Sara
5

Bạn cũng có thể viết

Hello John
Hello Jack
Hello Sara
6

Có sự khác biệt nhỏ giữa hai, nhưng dù sao đi nữa - cả hai đều là những cách hợp lệ để xác định một hàm. Bây giờ, nếu bạn xác định một hàm và gán rõ ràng nó cho một biến, nó có vẻ khá hợp lý, bạn có thể chuyển nó dưới dạng tham số cho một hàm khác và bạn không cần dấu ngoặc:

Hello John
Hello Jack
Hello Sara
7

Đã trả lời ngày 8 tháng 11 năm 2012 lúc 9:37Nov 8, 2012 at 9:37

Naivistsnaivistsnaivists

32K5 Huy hiệu vàng58 Huy hiệu bạc83 Huy hiệu Đồng5 gold badges58 silver badges83 bronze badges

1

Có một cụm từ giữa các lập trình viên JavaScript: "Eval là xấu xa" vì vậy hãy cố gắng tránh nó bằng mọi giá!

Ngoài câu trả lời của Steve Fenton, bạn cũng có thể truyền trực tiếp các chức năng.

Hello John
Hello Jack
Hello Sara
8

Đã trả lời ngày 8 tháng 11 năm 2012 lúc 9:39Nov 8, 2012 at 9:39

Matthew Laytonmatthew LaytonMatthew Layton

37.2K46 Huy hiệu vàng169 Huy hiệu bạc288 Huy hiệu Đồng46 gold badges169 silver badges288 bronze badges

Tôi đã cắt tất cả tóc của mình với vấn đề đó. Tôi không thể làm cho các ví dụ ở trên hoạt động, vì vậy tôi đã kết thúc như:

Hello John
Hello Jack
Hello Sara
9

Và đó là một sự quyến rũ ... cho những gì tôi cần ít nhất. Hy vọng nó có thể giúp một số.

Đã trả lời ngày 15 tháng 4 năm 2016 lúc 9:31Apr 15, 2016 at 9:31

Fenix ​​Aorasfenix AorasFenix Aoras

Huy hiệu bạc 20139 Huy hiệu đồng3 silver badges9 bronze badges

0

Tôi đề nghị đặt các tham số vào một mảng, và sau đó tách chúng lên bằng hàm

Hello
2. Vì vậy, bây giờ chúng ta có thể dễ dàng vượt qua một chức năng với nhiều tham số và thực hiện nó một cách đơn giản.




  
  JavaScript program to pass a JavaScript function as parameter






0

Đã trả lời ngày 26 tháng 9 năm 2015 lúc 17:44Sep 26, 2015 at 17:44

NaramsimnaramsimNaramsim

7.3514 Huy hiệu vàng35 Huy hiệu bạc42 Huy hiệu đồng4 gold badges35 silver badges42 bronze badges

0

Bạn cũng có thể sử dụng

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

9 để làm điều tương tự.




  
  JavaScript program to pass a JavaScript function as parameter






1

Đó là nó. Tôi cũng đang tìm kiếm giải pháp này và thử các giải pháp được cung cấp trong các câu trả lời khác nhưng cuối cùng đã có nó hoạt động từ ví dụ trên.

Đã trả lời ngày 23 tháng 1 năm 2014 lúc 11:29Jan 23, 2014 at 11:29

NullpointernullpulumNullPointer

2.7263 huy hiệu vàng33 Huy hiệu bạc57 Huy hiệu đồng3 gold badges33 silver badges57 bronze badges

1

Đây là một cách tiếp cận khác:




  
  JavaScript program to pass a JavaScript function as parameter






2

Đã trả lời ngày 15 tháng 1 năm 2014 lúc 16:14Jan 15, 2014 at 16:14

Trong thực tế, có vẻ như hơi phức tạp, không phải.

Nhận phương thức làm tham số:




  
  JavaScript program to pass a JavaScript function as parameter






3

Bạn có thể đưa ra làm phương thức tham số:




  
  JavaScript program to pass a JavaScript function as parameter






4

Đã trả lời ngày 14 tháng 10 năm 2014 lúc 9:45Oct 14, 2014 at 9:45

1

Các câu trả lời khác làm một công việc tuyệt vời mô tả những gì đang diễn ra, nhưng một "gotcha" quan trọng là đảm bảo rằng bất cứ điều gì bạn đi qua thực sự là một tham chiếu đến một chức năng.

Chẳng hạn, nếu bạn chuyển qua chuỗi thay vì hàm, bạn sẽ gặp lỗi:




  
  JavaScript program to pass a JavaScript function as parameter






5

Xem jsfiddle

Đã trả lời ngày 23 tháng 3 năm 2015 lúc 20:54Mar 23, 2015 at 20:54

VictorvictorVictor

8281 Huy hiệu vàng9 Huy hiệu bạc24 Huy hiệu đồng1 gold badge9 silver badges24 bronze badges

Một thời gian khi bạn cần đối phó với người xử lý sự kiện, vì vậy cũng cần phải vượt qua sự kiện như một cuộc tranh luận, hầu hết các thư viện hiện đại như React, Angular có thể cần điều này.

Tôi cần ghi đè chức năng onsubmit [chức năng từ thư viện của bên thứ ba] với một số xác thực tùy chỉnh trên Reactjs và tôi đã vượt qua chức năng và sự kiện cả hai như dưới đây

Ban đầu




  
  JavaScript program to pass a JavaScript function as parameter






6

Đã thực hiện một chức năng mới

Hello
4 và được gọi là
Hello
5 và sự kiện làm đối số




  
  JavaScript program to pass a JavaScript function as parameter






7

Đã trả lời ngày 20 tháng 2 năm 2018 lúc 23:50Feb 20, 2018 at 23:50

Sumitsumitsumit

14.4K11 Huy hiệu vàng63 Huy hiệu bạc108 Huy hiệu đồng11 gold badges63 silver badges108 bronze badges

Bằng cách sử dụng ES6:




  
  JavaScript program to pass a JavaScript function as parameter






8

Đã trả lời ngày 28 tháng 6 năm 2021 lúc 9:46Jun 28, 2021 at 9:46

Nếu bạn có thể vượt qua toàn bộ chức năng của mình dưới dạng chuỗi, mã này có thể giúp bạn.




  
  JavaScript program to pass a JavaScript function as parameter






9

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

Akin Zemanakin ZemanAkin Zeman

3613 Huy hiệu bạc9 Huy hiệu Đồng3 silver badges9 bronze badges

Bạn cũng có thể sử dụng JSON để lưu trữ và gửi các chức năng của JS.

Kiểm tra lượt theo dõi:

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

0

Điều này sẽ in 'A'.

Những điều sau đây có tác dụng tương tự với những điều trên:

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

1

Cũng có tác dụng tương tự với những điều sau:

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

2

Và một mô hình đối tượng sử dụng lớp làm nguyên mẫu đối tượng:

function addStudent[id, refreshCallback]
{
    refreshCallback[];  
}

function refreshStudentList[] {
    console.log['Hello'];
}

addStudent[1, refreshStudentList];

3

Đã trả lời ngày 8 tháng 5 năm 2013 lúc 16:18May 8, 2013 at 16:18

Gazgasgazgasgazgas

2463 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges

1

Làm thế nào để bạn viết một hàm như một tham số trong JavaScript?

Hãy xác định các chức năng có các tham số 0, 1 và 2:..
// 0 tham số. hàm zero [] {return 0; }.
// 1 tham số. nhận dạng hàm [param] {return param; }.
// 2 tham số. hàm sum [param1, param2] {return param1 + param2; }.

Chúng ta có thể chuyển chức năng như một tham số trong JavaScript không?

Chuyển một hàm như một đối số cho hàm khá giống với biến số chuyển là một đối số cho hàm.Vì vậy, các biến có thể được trả về từ một hàm.Các ví dụ dưới đây mô tả việc truyền một hàm như một tham số cho một hàm khác.. so variables can be returned from a function. The below examples describe passing a function as a parameter to another function.

Làm thế nào để bạn vượt qua một hàm dưới dạng tham số?

Chúng ta không thể chuyển chức năng như một đối số cho một hàm khác.Nhưng chúng ta có thể vượt qua tham chiếu của một hàm dưới dạng tham số bằng cách sử dụng một con trỏ hàm.Quá trình này được gọi là cuộc gọi bằng tham chiếu là tham số hàm được truyền dưới dạng một con trỏ giữ địa chỉ của các đối số.by using a function pointer. This process is known as call by reference as the function parameter is passed as a pointer that holds the address of arguments.

Làm cách nào để chuyển giá trị từ hàm JavaScript này sang hàm khác?

Điều này được thực hiện bằng cách truyền các giá trị trong ngoặc đơn: myfeft [MyData].Ngay cả khi không có dữ liệu được truyền, chúng tôi vẫn phải khai báo và thực thi các chức năng bằng cách sử dụng dấu ngoặc đơn: myfunction [].passing values in parenthesis: myFunction[myData]. Even when there is no data to be passed, we still have to declare and execute functions by using parenthesis: myFunction[].

Bài Viết Liên Quan

Chủ Đề