我是JS的新手,我尝试过以下代码:

function isBigEnough(element, index, array, threshold) {
  return (element >= threshold);
}
[1, 2, 3].every(isBigEnough(threshold=0)


我认为它不起作用,因为prototype(在Array.prototype.filter()中)不包含阈值,因此它是类型不匹配的,但是我们不能这样定义:
    isBiggerThenZero = isBigEnough(threshold=0)
那么有没有适合这种情况的解决方法?

最佳答案

当您执行[1, 2, 3].every(isBigEnough(0))时。它:


调用isBigEnough返回false
执行[1, 2, 3].every(false)。其中false不是函数。所以它给你一个错误。


您可以使用将阈值绑定到返回函数的闭包:

function isBigEnough(threshold) {
  return function(element, index, array) {
     return (element >= threshold);
  }
}
[1, 2, 3].every(isBigEnough(0))

关于javascript - JS使用部分参数化的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44718965/

10-10 18:57