通过带有参数的函数作为参数?

2020/11/02 20:02 · javascript ·  · 0评论

是否可以通过将参数作为参数的javascript函数传递?

例:

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

使用“关闭”:

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

这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。

使用Function.prototype.bind()报价MDN:

bind()方法创建一个新函数,该新函数在被调用时将其this关键字设置为所提供的值,并且在调用新函数时所提供的任何参数之前均具有给定的参数序列。

所有主要浏览器(包括IE9 +)都支持它。

您的代码应如下所示:

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

旁注:我假设您处于全局环境中,即this变量is window; 否则使用this代替null

不,但是您可以传递不带参数的参数,然后执行以下操作:

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

因此,您传递的是不带参数的匿名函数,然后该函数使用闭包中的变量调用参数化函数

是的,像这样:

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

或者,如果您使用的是es6,则应该可以使用箭头功能

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

你可以这样做

var message  = 'Hello World';

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

然后

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

activate(callback);

或者,如果您的回调包含更灵活的逻辑,则可以传递对象。

演示版

这是费迪南德·拜耶(Ferdinand Beyer)方法的一个示例:

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

在此示例中,使用函数包装将“参数值”从函数1通过函数2传递到函数3。

本文地址:http://javascript.askforanswer.com/tongguodaiyoucanshudehanshuzuoweicanshu.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!