如果我必须创建一个函数,比如说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
函数的外部函数。
答案 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);
};
}