微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JS/Redux 三元操作讲解

如何解决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 的结果,即:

  • typeof startDate !== 'number' - 如果 true 的类型为 not startDate,则为 "number",如果,则为 false强> "number"
  • || - 逻辑 OR
  • expense.createdAt >= startDate - 如果 true 大于或等于 expense.createdAt
  • ,则为 startDate

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


顺便提一下,这不是三元运算(具有三个操作数的运算)。这是一组三个二元运算(具有两个操作数的运算):

  1. startDate - 操作数为 falsetypeof startDate !== 'number',操作符为 typeof startDate
  2. 'number' - 操作数为 !==expense.createdAt >= startDate,操作符为 expense.createdAt
  3. startDate - 操作数是上面两个的结果(不按顺序求值),操作符是 >=

(result of 1) || (result of 2) 的工作方式如下:

  1. 它评估它的左手操作数
  2. 如果 #1 的结果是 truthy,则将该真实值作为结果
  3. 如果 #1 的结果是 falsy|| 会评估其右侧操作数并将该结果作为其值

(一个 truthy 值是一个不是 falsy 的值。一个 falsy 值是一个计算结果为 { {1}} 在条件中。假值为 ||||false0""NaN 和 [on浏览器] null 出于历史原因。所有其他值都是真实的。)

JavaScript 确实有一个三元运算符(目前),条件 运算符 (undefined)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?