function not(f) {
return function () { // 返回一个新的函数
var result = f.apply(this, arguments);//调用f()
return !result;//对结果求反
}
}
var even = function (x) {// 判断a是否为偶数的函数
return x % 2 === 0;
}
var odd = not(even); //一个新函数,所做的事情和event()相反
console.log([1, 1, 3, 5, 5].every(odd));//true:每个元素就都是奇数
f.apply(this,arguments)是指调用f方法,将参数传递给被调用的函数。我给你举个例子,你对照着例子理解一下:
例如:
function num(a,b){
console.log(a+b)
};
function add(num1,num2){
num.apply(this,arguments)
};
这里面的num.apply是指调用num方法,里面的this,arguments,是指将此处的this对象传递给num方法,num方法里的this就可以指向此处的this,
arguments是指将当前的参数传递给被调用的num函数。
所以,示例中的代码,如果我们调用add(1,2)的话,那么它就会在add方法中调用num方法,并将参数1和2传递给num,所以结果是打印出3。
由以上案例,你应该能理解了吧