Javascript ===(三等于)

mjm*_*che 3 javascript

提供以下代码段

function countZeroes(array) {
  function counter(total, element) {
    return total + (element === 0 ? 1 : 0);
  }
  return reduce(counter, 0, array);
}
Run Code Online (Sandbox Code Playgroud)
  1. ===做什么?
  2. reduce内置功能吗?它有什么作用?
  3. 请解释这个程序的步骤.

use*_*716 7

它是严格的相等运算符.

它根据严格的等式比较算法比较两个值并检查它们是否相同.

这是相反的==,如果它们是不同类型的,它将试图强制被比较的一个或两个值.那个使用Absract Equality Comparison算法.

抽象算法的规则可能很棘手.===除非你有特殊需要,否则最好不要使用==.

来自MDC文档

标准相等运算符(==和!=)比较两个操作数而不考虑它们的类型.严格相等运算符(===和!==)对相同类型的操作数执行相等比较.如果操作数必须是特定类型以及值,或者操作数的确切类型很重要,请使用严格相等运算符.否则,使用标准相等运算符,它允许您比较两个操作数的标识,即使它们的类型不同.


关于代码,这部分:

(element === 0 ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)

...基本上说,如果值element正好等于0,然后使用1,否则使用0.

所以采取整个行:

return total + (element === 0 ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)

...函数的返回值将是total + 1,如果element等号0,否则返回值将是total + 0.

您可以使用if-else语句重写代码:

if( element === 0 ) {
    return total + 1;
} else {
    return total + 0;
}
Run Code Online (Sandbox Code Playgroud)


gen*_*nry 5

=====除了不强制转换变量之外,其他均相同

0 == '0' -> true
0 === '0' -> false
Run Code Online (Sandbox Code Playgroud)

reduce不是内置函数,但是它的确可以在数组的每个元素上运行计数器。

因此,对于数组中的每个元素,都将其检查为0,如果是,则将总数增加。