了解代码中 || 的使用

  • 本文关键字:了解 代码 javascript
  • 更新时间 :
  • 英文 :


我对Javascript比较陌生,我试图理解当前代码中|||的使用

所以,我正在浏览这篇关于Javascript中reduce的惊人文章,他写了这个例子。

const fruitBasket = ['banana', 'cherry', 'orange', 'apple', 'cherry', 'orange', 'apple', 'banana', 'cherry', 'orange', 'fig' ];
const count = fruitBasket.reduce( (tally, fruit) => {
tally[fruit] = (tally[fruit] || 0) + 1 ;
return tally;
} , {})
count // { banana: 2, cherry: 3, orange: 3, apple: 2, fig: 1 }

[问题]在这里,我无法理解两件事

tally[fruit] = (tally[fruit] || 0) + 1 ; 

这个||在这里做什么,他为什么要使用它?(我知道这是一个 or 运算符(

其次,这在功能结束时, {})意味着什么?

这里使用||称为短路评估。这意味着如果tally[fruit]是真实的,它将使用其值,否则它将使用0(然后添加1(。

{}reduce()函数的最后一个参数,它是起始值(在本例中为 emtpy 对象(。一般来说,这可以是任何类型,包括字符串、数字、数组和对象。MDN有一个很好的解释:

初始值可选

用作callback第一次调用的第一个参数的值。如果未提供初始值,则将使用数组中的第一个元素。在没有初始值的空数组上调用reduce()是一个错误。

1.-||的意思是"或"。表达式表示分配tally[fruit]的值,或者如果值未定义,则分配0

2.-{}是 reduce 函数的初始值(空对象(。

此初始值可以是任何类型、数字、数组、对象。随着reduce的每次迭代,这个初始值将被修改(因此也称为"累加器"(。 在您的函数中,tally是累加器、对象,fruit是正在迭代的fruitBasket数组的每个项目。

有关更多信息,请查看 reduce 的文档

|| 代表 OR。 因此,如果 Tally[fruit] 返回 null、未定义、'' 或 0,它将设置为 0 并添加 1

它是JavaScript中的逻辑OR运算符。

(tally[fruit] || 0)这个语句本质上意味着如果tally[fruit]nullundefined,那么它将被赋值为0。

最新更新