如何确定作为参数传递给另一个函数的函数的参数是否未定义

时间:2017-02-14 17:49:14

标签: javascript

如果我必须创建一个函数,比如说Maybe()接受另一个函数fn作为参数,并且当fn的参数未定义或为null时返回一个新函数,我应该如何确定fn的参数是否为未定义与否?

function maybe(fn) {
    return fn;
}

function fn(firstName, lastName) {
    return `${firstName} ${lastName}`; 
}

// this will print, firstName Lastname    
console.log(maybe(fn)("firstName","Lastname"));

// it will print undefined Lastname
console.log(maybe(fn)(undefined, "Lastname"));

如何修改maybe函数以检查fn的任何参数是undefined还是null并返回false是否存在?

除了传入的args之外,我无法对fn函数进行任何修改,因为fn是一个将传递给maybe函数的外部函数。

1 个答案:

答案 0 :(得分:2)

您可以让maybe(fn)返回包装函数:

function maybe(fn) {
    return function() {
        for (var i = 0; i < arguments.length; ++i) {
            if (arguments[i] == null) {
                return false;
            }
        }

        return fn.apply(this, arguments);
    };
}