将意外参数传递给回调函数

时间:2017-06-28 20:58:33

标签: javascript

我想知道是否有办法将附加参数传递给回调函数,除了父函数传递它之外

function wrapper() {
    function functionForPassing() {
        console.log('carrot');
    }

    function test(a, b, cb) {
        cb(a,b);
    }

    test('apple', 'banana', function(first, second, passedFunction=functionForPassing) {
        console.log(first);
        console.log(second);
        passedFunction();
    });
}

3 个答案:

答案 0 :(得分:0)

您可以使用rest参数执行此操作,但必须首先进行回调。 例如:

function wrapper() {
    function functionForPassing() {
        console.log('carrot');
    }

    function test(cb, ...params) {
        cb(...params);
    }

    test(function(...other) {
        let [first, second] = other; // Destructuring assignment
        console.log(first);
        console.log(second);
    }, 'apple', 'banana', 'any', 'number', 'of', 'arguments');
}

答案 1 :(得分:0)

function wrapper() {
    function functionForPassing() {
        console.log('carrot');
    }

    function test(a, b, cb) {
        cb(a, b);
    }

    test('apple', 'banana', function(first, second, passedFunction) {
        passedFunction = passedFunction || functionForPassing;
        console.log(first);
        console.log(second);
        passedFunction();
    });
}

wrapper();

答案 2 :(得分:0)

js的分层范围为我处理这个,而不必传递我试图作为回调参数访问的对象

function wrapper() {
    var other = "carrot"

    function test(a, b, cb) {
        cb(a,b);
    }

    test('apple', 'banana', function(first, second) {
        console.log(first);
        console.log(second);
        console.log(other);
    });
}
wrapper();