单个if条件的行为(忽略else返回false)

时间:2019-06-16 18:32:19

标签: javascript reactjs if-statement

我可以省略此React生命周期方法的else return false并仍然可以按需运行,返回奇数的false(value从0开始递增1-参见freeCodeCamp {{3 }}中的其余代码),但是我不清楚为什么它会这样工作。

shouldComponentUpdate(nextProps, nextState) {
    console.log('Should I update?');
    if (nextProps.value % 2 == 0) return true;
  }

由于shouldComponentUpdate在每个React challenge中默认为true,所以我认为即使对于奇数值,它仍然可能返回true。我想默认值仅适用于未指定任何条件的情况。

如果不满足返回true的if条件,并且没有提供其他条件,那么JavaScript是否总是返回false?

2 个答案:

答案 0 :(得分:2)

  

如果不满足返回true的if条件,并且没有提供其他条件,那么JavaScript是否总是返回false?

简略的答案是 。 JavaScript值(甚至是布尔值)可以评估为truthyfalsy

这样,让我们​​尝试分析您的组件方法中正在发生的事情。

  • 没有return语句的JavaScript函数的求值为undefined

  • React中的
  • shouldComponentUpdate需要一个布尔值。

  • 由于函数返回了undefined,因此该函数会自动评估为 falsy 值。

  • 然后由于返回 falsy 值而未更新组件。

我的建议:

控制您的代码。

避免这种意外行为,因为它可能会在以后的React版本中更改。

为什么不是ternary conditional?:

shouldComponentUpdate(nextProps, nextState) {
   return (nextProps.value % 2 == 0 ? true : false);
}

答案 1 :(得分:0)

javascript值始终是“真实的”或“虚假的” ...在不正确的情况下,返回类型为void,即“ falsey”,以及false,null和undefined(通过此函数分配的任何内容都将变为undefined) (在falsey情况下),0和空字符串。