JavaScript 中参数传递给回调函数

Posted by cl9000 on May 09, 2020

创造力是智力的乐趣。——<阿尔伯特·爱因斯坦>

默认情况下,您不能将参数传递给回调函数。例如:

1
2
3
4
5
function callback() {
console.log('Hi human');
}

document.getElementById('someelem').addEventListener('click', callback);

您可以利用Javascript中的闭包作用域将参数传递给回调函数。检查以下示例:

1
2
3
4
5
6
7
8
function callback(a, b) {
return function() {
console.log('sum = ', (a+b));
}
}

var x = 1, y = 2;
document.getElementById('someelem').addEventListener('click', callback(x, y));

闭包

闭包是引用独立(自由)变量的函数。换句话说,闭包中定义的功能“记住”了创建它的环境。查看MDN文档以了解更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

这样,参数x和y被调用时就在回调函数的范围之内。

执行此操作的另一种方法是使用 bind 方法。例如:

1
2
3
4
5
var alertText = function(text) {
alert(text);
};

document.getElementById('someelem').addEventListener('click', alertText.bind(this, 'hello'));

参考

关注【公众号】,了解更多。



支付宝打赏 微信打赏

赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!