Here is the problem
function callback (arg) { console.log(arg); // undefined } function test(callback) { callback(); } test(callback); The question is how to pass arguments to the callback function?
Here is the problem
function callback (arg) { console.log(arg); // undefined } function test(callback) { callback(); } test(callback); The question is how to pass arguments to the callback function?
Refer to closures.
var callback = function (a, b, c) { console.log(a, b, c); } var wrapper = function () { return callback(1, 2, 3); } var wrapperFactory = function (a, b, c) { return function () { return callback(a, b, c); }; } $element.addEventListener('click', wrapper); $element.addEventListener('click', wrapperFactory(1, 3, 2)); better still use magic with .call / .apply to transfer this
var factory = function (callback) { var args = Array.prototype.slice.call(arguments, 1), self = this; // это скорее всего не нужно, просто я не кунг-фу мастер в js и не знаю, сохранится ли this return function () { return callback.apply(self, args); }; } $element.addEventListener('click', factory(callbackA, 1, 12)); $element.addEventListener('mouseup', factory(callbackB, 'long', 'argument', 'list')); @MorePortableUt offers an identical result with .bind :
$element.addEventListener('click', callbackA.bind(undefined, 1, 12)); $element.addEventListener('mouseup', callbackB.bind($element, 'long', 'argument', 'list')); //Обратитесь к аргументам данной функции. function callback (arg) { console.log(callback.arguments); } function test(callback) { //Тут передаем несколько аргументов в нашу функцию callback(1,2,3); } test(callback); //на выводе в консоли получаем [1,2,3] test(callback, args) - user220409Source: https://ru.stackoverflow.com/questions/603137/
All Articles
test(function() { callback(1,2,3); });- Igor