Hướng dẫn javascript pass function as parameter with arguments - hàm truyền javascript dưới dạng tham số với các đối số

186

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.

Có thể chuyển chức năng JavaScript với tham số dưới dạng tham số không?

Thí dụ:

$(edit_link).click( changeViewMode( myvar ) );

Hướng dẫn javascript pass function as parameter with arguments - hàm truyền javascript dưới dạng tham số với các đối số

Bryanh

5.6963 Huy hiệu vàng35 Huy hiệu bạc47 Huy hiệu đồng3 gold badges35 silver badges47 bronze badges

Hỏi ngày 19 tháng 8 năm 2009 lúc 14:13Aug 19, 2009 at 14:13

2

Sử dụng "đóng":

$(edit_link).click(function(){ return changeViewMode(myvar); });

Điều này tạo ra một trình bao bọc chức năng tạm thời ẩn danh biết về tham số và chuyển nó đến triển khai gọi lại thực tế.

Đã trả lời ngày 19 tháng 8 năm 2009 lúc 14:14Aug 19, 2009 at 14:14

Ferdinand Beyerferdinand BeyerFerdinand Beyer

62.6K15 Huy hiệu vàng151 Huy hiệu bạc143 Huy hiệu đồng15 gold badges151 silver badges143 bronze badges

6

Sử dụng Function.prototype.bind(). Trích dẫn MDN:

Phương thức

$(edit_link).click(function(){ return changeViewMode(myvar); });
0 tạo ra một hàm mới, khi được gọi, có từ khóa
$(edit_link).click(function(){ return changeViewMode(myvar); });
1 được đặt thành giá trị được cung cấp, với một chuỗi các đối số nhất định trước bất kỳ được cung cấp nào khi hàm mới được gọi.
$(edit_link).click(function(){ return changeViewMode(myvar); });
0
method creates a new function that, when called, has its
$(edit_link).click(function(){ return changeViewMode(myvar); });
1 keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.

Nó được hỗ trợ bởi tất cả các trình duyệt chính, bao gồm IE9+.

Mã của bạn sẽ trông như thế này:

$(edit_link).click(changeViewMode.bind(null, myvar));

Lưu ý bên cạnh: Tôi giả sử bạn đang ở trong bối cảnh toàn cầu, tức là biến

$(edit_link).click(function(){ return changeViewMode(myvar); });
1 là
$(edit_link).click(function(){ return changeViewMode(myvar); });
3; Nếu không, sử dụng
$(edit_link).click(function(){ return changeViewMode(myvar); });
1 thay vì
$(edit_link).click(function(){ return changeViewMode(myvar); });
5.

Đã trả lời ngày 2 tháng 1 năm 2016 lúc 14:33Jan 2, 2016 at 14:33

Hướng dẫn javascript pass function as parameter with arguments - hàm truyền javascript dưới dạng tham số với các đối số

4

Không, nhưng bạn có thể truyền một cái mà không có tham số và làm điều này:

$(edit_link).click(
  function() { changeViewMode(myvar); }
);

Vì vậy, bạn đang chuyển một hàm ẩn danh không có tham số, sau đó chức năng đó gọi hàm được tham số hóa của bạn với biến trong phần đóng

Đã trả lời ngày 19 tháng 8 năm 2009 lúc 14:15Aug 19, 2009 at 14:15

ClydeclydeClyde

7.98910 Huy hiệu vàng55 Huy hiệu bạc86 Huy hiệu đồng10 gold badges55 silver badges86 bronze badges

0

Hoặc nếu bạn đang sử dụng ES6, bạn sẽ có thể sử dụng chức năng mũi tên

$(edit_link).click(() => changeViewMode(myvar));

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

Hướng dẫn javascript pass function as parameter with arguments - hàm truyền javascript dưới dạng tham số với các đối số

Vâng, như thế này:

$(edit_link).click(function() { changeViewMode(myvar) });

Đã trả lời ngày 19 tháng 8 năm 2009 lúc 14:15Aug 19, 2009 at 14:15

Hướng dẫn javascript pass function as parameter with arguments - hàm truyền javascript dưới dạng tham số với các đối số

ClydeclydePhilippe Leybaert

7.98910 Huy hiệu vàng55 Huy hiệu bạc86 Huy hiệu đồng31 gold badges210 silver badges222 bronze badges

Hoặc nếu bạn đang sử dụng ES6, bạn sẽ có thể sử dụng chức năng mũi tên

var message  = 'Hello World';

var callback = function(){
alert(this)
}.bind(message);

Đã trả lời ngày 13 tháng 2 năm 2018 lúc 2:12

function activate(callback){
  callback && callback();
}

activate(callback);

Vâng, như thế này:

Philippe Leybaertphilippe Leybaert

165K31 Huy hiệu vàng210 Huy hiệu bạc222 Huy hiệu đồngAug 24, 2016 at 14:17

Hướng dẫn javascript pass function as parameter with arguments - hàm truyền javascript dưới dạng tham số với các đối số

Bạn có thể làm được việc này

function function1()
{
    function2(function () { function3("parameter value"); });
}
function function2(functionToBindOnClick)
{
    $(".myButton").click(functionToBindOnClick);
}
function function3(message) { alert(message); }

và sau đó

Hoặc nếu cuộc gọi lại của bạn chứa logic linh hoạt hơn, bạn có thể vượt qua đối tượng.Sep 7, 2016 at 14:32

Thử nghiệmerionpc

Đã trả lời ngày 24 tháng 8 năm 2016 lúc 14:171 silver badge14 bronze badges

Bạn có thể chuyển một chức năng như một đối 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.. so variables can be returned from a function.

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

Gọi chức năng Khi gọi một hàm có tham số hàm, giá trị được truyền phải là một con trỏ đến một hàm. Sử dụng tên của hàm (không có dấu ngoặc đơn) cho điều này: func (in); Sẽ gọi func, chuyển chức năng in cho nó.the value passed must be a pointer to a function. Use the function's name (without parentheses) for this: func(print); would call func , passing the print function to it.

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;}.

Làm thế nào để bạn vượt qua một chức năng như đối số trong TypeScript?

Tương tự như JavaScript, để truyền một hàm dưới dạng tham số trong TypeScript, xác định một hàm mong đợi một tham số sẽ nhận được hàm gọi lại, sau đó kích hoạt hàm gọi lại bên trong hàm cha.define a function expecting a parameter that will receive the callback function, then trigger the callback function inside the parent function.