我无法理解此代码,任何人都可以解释:
const statDateMatch = typeof startDate !== 'number' || expense.createdAt >= startDate;
谢谢。
答案 0 :(得分:0)
这将根据多种条件返回布尔值(真或假)。
如果startDate变量不是数字,则返回true,否则条件的第一部分将计算为false,在这种情况下,它将继续到||
之后的部分因此,如果startDate是一个数字,则它将根据条件(expense.createdAt> = startDate)中的第二个子句返回true或false
答案 1 :(得分:0)
由于我们使用的是OR运算符||
,因此我们说如果任一条件为真,则startDateMatch
将为真,否则为假。
因此,在OR的左侧,我们有typeof startDate !== 'number'
,它询问...是变量startDate
的类型,不等于字符串number
。让我们调用此 A 的结果。
在右侧,我们有expense.createdAt >= startDate
,它询问...是变量expense.createdAt
的值大于还是等于startDate
的值。这样的结果我们称为 B 。
因此,最后我们要说的是,如果A或B的任何一个结果为true,则将其分配给常数startDateMatch
。如果没有一个是对的,那么startDateMatch
将为假。
const startDateMatch is equal to: Is any one of the results from A and B true?
有道理吗?
答案 2 :(得分:0)
/ *首先判断startDate的类型是否为'number';如果未返回true,则如果startDate的'number'则判断||之后的条件* / var flag = function(){if(typeof startDate!=='number'){flag = true;}否则if(expense.createdAt> = startDate){返回true;} else {返回false;}} const statDateMatch = flag()
答案 3 :(得分:0)
在没有代码块的上下文的情况下,很难解释此代码的作用并确定其是否正确。如果您提供有关您想达到的目标以及如何其他人可以提供帮助的更多详细信息,这是一个好习惯。
但是,鉴于这一行,这就是我的脑海:
const statDateMatch = typeof startDate !== 'number' || expense.createdAt >= startDate;
^ ^ ^ ^ ^
| | | | |
| | | | |
| | | | +-- the expense was created AFTER startDate ?
| | | |
| | | +--- or
| | |
| | +-- Is the type of startDate different than the string 'number' ?
| |
| +---- Assign the following expression once evaluated
|
+---- Declare a constant called "statDateMatch" (maybe typo here ??)
所以用普通英语读起来就像:
startDate是否不同于数字或费用创建日期在开始日期之后?然后将其视为statDateMatch
重要:请注意,如果打算将statDateMatch
设为startDateMatch
,那么像这样简单的错字可能会给试图理解整个代码块带来很多麻烦为遥远的读者做。