给出以下代码段
function countZeroes(array) {
function counter(total, element) {
return total + (element === 0 ? 1 : 0);
}
return reduce(counter, 0, array);
}
reduce
是内置函数吗?它有什么作用? 最佳答案
它是严格的相等运算符。
它比较两个值,并根据 Strict Equality Comparison Algorithm 来检查它们是否相同。
这与==
相反,如果它们是不同类型,它将尝试强制比较一个或两个值。那个使用了 Absract Equality Comparison Algorithm 。
Abstract算法的规则可能很棘手。除非您特别需要===
,否则最好使用==
。
来自MDC docs
关于代码,这部分内容:
(element === 0 ? 1 : 0)
...基本上说如果element
的值与0
完全相等,则使用1
,否则使用0
。因此,请看整行:
return total + (element === 0 ? 1 : 0);
...如果total + 1
等于element
,则函数的返回值为0
,否则返回值为total + 0
。您可以使用
if-else
语句重写代码:if( element === 0 ) {
return total + 1;
} else {
return total + 0;
}
关于Javascript ===(等于三倍),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5112934/