在javascript中不是数字的条件
我遇到了一种使我感到奇怪的情况。我正在研究React,因为我已经给出了渲染方法的一个条件,如下所示:在javascript中不是数字的条件,javascript,reactjs,Javascript,Reactjs,我遇到了一种使我感到奇怪的情况。我正在研究React,因为我已经给出了渲染方法的一个条件,如下所示: if (!this.props.allYearData || !this.props.Growth) return <Loading />; if(!this.props.allYearData | |!this.props.Growth) 返回; 但是,我的页面始终显示加载符号。我在if条件下对我给出的数据进行了控制台处理,两个数据都处于定义状态,但我的增长显示为
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。对假值求反将得到真值。最好小心评估值的方式,因为这些所谓的“假”值(不是“假”而是评估为假的值)可能会导致意外结果。一个更具体的测试通常会阻止这种情况的发生。几本好书。