在javascript中不是数字的条件

在javascript中不是数字的条件,javascript,reactjs,Javascript,Reactjs,我遇到了一种使我感到奇怪的情况。我正在研究React,因为我已经给出了渲染方法的一个条件,如下所示: if (!this.props.allYearData || !this.props.Growth) return <Loading />; if(!this.props.allYearData | |!this.props.Growth) 返回; 但是,我的页面始终显示加载符号。我在if条件下对我给出的数据进行了控制台处理,两个数据都处于定义状态,但我的增长显示为

我遇到了一种使我感到奇怪的情况。我正在研究React,因为我已经给出了渲染方法的一个条件,如下所示:

 if (!this.props.allYearData || !this.props.Growth)
      return <Loading />;
if(!this.props.allYearData | |!this.props.Growth)
返回;

但是,我的页面始终显示加载符号。我在if条件下对我给出的数据进行了控制台处理,两个数据都处于定义状态,但我的增长显示为0值,所以我注释掉了
this.props.Growth
,并加载了我的页面。所以我只是想知道为什么JavaSRIPT没有把0看成是一个定义的值?我总觉得
表示
未定义
。有人能解释一下吗?

0
是假的<代码>
是一个求反运算符。因此
!0将是“不虚假”或真实的。
if
语句条件中的Truthy值导致将计算
if


细节 有关Truthy/Falsy的更多信息,请参阅

以下是几个例子:

true     // truthy
false    // falsy
!true    // falsy (negation operator, it says "opposite of")
!false   // truthy
0        // falsy (this is because booleans are represented as 0 and 1 in binary,
         //        0 being false)
!0       // truthy
undefined // falsy
!undefined // truthy

0
是错误的<代码>
是一个求反运算符。因此
!0将是“不虚假”或真实的。
if
语句条件中的Truthy值导致将计算
if


细节 有关Truthy/Falsy的更多信息,请参阅

以下是几个例子:

true     // truthy
false    // falsy
!true    // falsy (negation operator, it says "opposite of")
!false   // truthy
0        // falsy (this is because booleans are represented as 0 and 1 in binary,
         //        0 being false)
!0       // truthy
undefined // falsy
!undefined // truthy

你的印象!运算符在JS(和大多数其他语言)中相当不合适。这并不意味着未定义,它通常意味着“不”,因此:

表示“如果条件不正确”

false、undefined、null、0和空字符串(如“”)在javascript中如果用于if等条件运算符,都将返回“false”,而其他所有内容都将返回“truthy”。在大多数松散类型语言中,这是一个相当标准的实践,在python中可以找到类似的行为,但一个重要的区别是,在JS中,空数组不是假数组,而在python中却是假数组

如果您只想知道该值是否未定义,那么很简单:

 if (this.props.allYearData !== undefined || this.props.Growth !== undefined)

你的印象!运算符在JS(和大多数其他语言)中相当不合适。这并不意味着未定义,它通常意味着“不”,因此:

表示“如果条件不正确”

false、undefined、null、0和空字符串(如“”)在javascript中如果用于if等条件运算符,都将返回“false”,而其他所有内容都将返回“truthy”。在大多数松散类型语言中,这是一个相当标准的实践,在python中可以找到类似的行为,但一个重要的区别是,在JS中,空数组不是假数组,而在python中却是假数组

如果您只想知道该值是否未定义,那么很简单:

 if (this.props.allYearData !== undefined || this.props.Growth !== undefined)

你能详细解释一下吗?放
在某事物前面“否定”它,即使它“相反”。如果您有
正确的内容
,请放入
在它前面会使它变为假的
!例如,true==false
0`被认为是
错误的
,所以如果你把
放进去
在某个值为false之前,它变为
true
。JavaScript会将许多值计算为false—数字0、空字符串、
NaN
未定义的值都将计算为false。对假值求反将得到真值。最好小心评估值的方式,因为这些所谓的“假”值(不是“假”而是评估为假的值)可能会导致意外结果。一个更具体的测试通常会阻止这种情况。你能详细说明一下吗?把
在某事物前面“否定”它,即使它“相反”。如果您有
正确的内容
,请放入
在它前面会使它变为假的
!例如,true==false
0`被认为是
错误的
,所以如果你把
放进去
在某个值为false之前,它变为
true
。JavaScript会将许多值计算为false—数字0、空字符串、
NaN
未定义的值都将计算为false。对假值求反将得到真值。最好小心评估值的方式,因为这些所谓的“假”值(不是“假”而是评估为假的值)可能会导致意外结果。一个更具体的测试通常会阻止这种情况的发生。几本好书。