Javascript 使用不带函数的.filter()方法

Javascript 使用不带函数的.filter()方法,javascript,Javascript,我在codewars上看到了这个解决方案 "strict mode"; let testarr = [true,true,false,true,true]; function countSheeps(arrayOfSheeps) { return arrayOfSheeps.filter(Boolean).length; } console.log(countSheeps(testarr)) 这是怎么回事?我认为filter方法要工作,必须向其中传递函数,而不是数据类型或值。我

我在codewars上看到了这个解决方案

    "strict mode";
let testarr = [true,true,false,true,true];

function countSheeps(arrayOfSheeps) {
  return arrayOfSheeps.filter(Boolean).length;
}

console.log(countSheeps(testarr))
这是怎么回事?我认为filter方法要工作,必须向其中传递函数,而不是数据类型或值。我用一个数字数组尝试了这个方法,并用“数字”和实际数字(如3)替换了“布尔”一词。但是这不起作用-那么为什么它在这里使用布尔值呢?

它使用了,它可以用作函数

Boolean(1); // => true
Boolean(0); // => false

布尔值是一个函数,而.filter方法接受函数

Boolean(1); // => true
Boolean(0); // => false
所以它和下面的代码一样


“严格模式”;
设testarr=[true,true,false,true,true];
函数countSheeps(arrayOfSheeps){
返回arrayOfSheeps.filter((sheep)=>Boolean(sheep)).length;
}
控制台日志(countSheeps(testarr))

不是数据类型。试试布尔型的类型。哦,好的,那么真的和假的数据类型是布尔型的?更准确地说,“哪一个是函数”。