JS/Redux三元运算解释



你能解释一下这部分代码是如何工作的吗?我坚持到底:

const getVisibleExpenses = (expenses, {text, sortBy, startDate, endDate}) => {
return expenses.filter((expense)=> {
const startDateMatch = typeof startDate !== 'number' || expense.createdAt >= startDate;

所以我们正在破坏这里的东西{text,sortBy…},但是,我在理解这个部分的处理方法时遇到了问题:

const startDateMatch = typeof startDate !== 'number' || expense.createdAt >= startDate;

我在理解该部分的处理方法时遇到了问题:

const startDateMatch = typeof startDate !== 'number' || expense.createdAt >= startDate;

startDateMatch设置为表达式typeof startDate !== 'number' || expense.createdAt >= startDate的结果,即:

如果startDate的类型为而不是"number",则
  • typeof startDate !== 'number'-将为true;如果"number",则为false
  • ||—逻辑OR
  • 如果expense.createdAt大于或等于startDate,则expense.createdAt >= startDate-将为true

因此,如果startDate的类型不是"number"expense.createdAt大于或等于startDate,则startDateMatch将被设置为true;否则它将被设置为CCD_ 19。


顺便说一句,这不是一个三元运算(一个有三个操作数的运算(。它是一组三个二进制运算(带有两个操作数的运算(:

  1. typeof startDate !== 'number'-操作数为typeof startDate'number',运算符为!==
  2. expense.createdAt >= startDate—操作数为expense.createdAtstartDate,运算符为>=
  3. (result of 1) || (result of 2)-操作数是上面两个的结果(不按该顺序计算(,运算符为||

||的工作原理如下:

  1. 它计算其左侧操作数
  2. 如果#1的结果是truthy,则将该truthy值作为其结果
  3. 如果#1的结果为falsy,则||计算其右侧操作数,并将该结果作为其值

(truthy值是一个不是falsy的值。falsy值是在条件下评估为false的值。由于历史原因,falsy值为0""NaNnullundefinedfalse和[在浏览器上]document.all。所有其他值都是truthy。(

JavaScript确实有一个三元运算符(目前(,即条件运算符(? :(。

相关内容

  • 没有找到相关文章

最新更新