我希望能够看到绑定事件时可用的回调函数中的值。如果在绑定事件时定义了函数,那么在函数内部我可以通过闭包看到值:
var number = 777;
$('span').click(function() {
alert(number); //alerts 777 - available through closure
});
但是,如果在“数字”变量不可用时先前定义了该函数,则该技巧将不起作用。如果函数以这种方式绑定到事件,则函数 number_alerter 看不到“数字”变量:
$('span').click(number_alerter);
似乎唯一的解决方案是使用“number”参数定义函数并将“number”变量传递给函数:
//function defined somewhere earlier
function number_alerter(e, number) {
alert(number);
}
...
//current scope
var number = 777;
$('span').on('click', function(e) {
return number_alerter(e, number);
});
我的问题是是否有另一种方法可以将此变量传递给“number_alerter”函数?也许通过关闭也有可能?
编辑:这是可能需要上述内容的真实情况。我有两个功能:
array_sort(array, compare_function)
compare_values(value1, value2, case_insensitive)
函数 array_sort 只传递给 compare_values 函数的两个值,而使用函数 array_sort 时也应该传递第三个不区分大小写的参数。我知道如何做到这一点的唯一方法是将 compare_values 函数包装到另一个函数中:
var my_array = [];
var case_insensitive = true;
var wrapper = function(value1, value2) {
compare_values(value1, value2, case_insensitive)
}
array_sort(my_array, wrapper);
有没有其他方法可以做到这一点?