我是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)
那么这个案例有很好的解决方法吗?
答案 0 :(得分:4)
执行[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))
答案 1 :(得分:1)
默认参数必须在函数声明中,例如:
function isBigEnough(element, index, array, threshold=0) {
return (element >= threshold);
}
[1, 2, 3].every(isBigEnough);
然而,现在很难通过门槛:
[1,2,3].every((...a)=>isBigEnough(...a,2));
所以你宁愿这样做:
function isBigEnough(threshold=0,element, index, array) {
return (element >= threshold);
}
[1, 2, 3].every(isBigEnough.bind(null,5));//threshold=5