NNNの博客

JS的truthy和falsy🎄

在看react教程的时候,突然看到下面这段话:

在有条件性渲染 React 元素时非常有用。如果 showHeader 为 true 时,

会被渲染:

1
2
3
4
<div>
{showHeader && <Header />}
<Content />
</div>

需要注意的是“falsy”值,例如数值 0 ,仍然会被 React 渲染。例如,这段代码不会按照你预期的发生,因为当 props.messages 是一个空数组时 0 会被打印:

1
2
3
4
5
<div>
{props.messages.length &&
<MessageList messages={props.messages} />
}
</div>

引自:react中文
第一次看到truthy和falsy的说法。随机去查了下truthy和falsy。

JavaScript中存在Truthy值和Falsy值的概念 — 除了boolean值true、false外,所有类型的JavaScript值均可用于逻辑判断,其规则如下:

  1. Falsy值,当进行逻辑判断时均为false(如!!false==false)。六个Falsy值:false、undefined、null、正负0、NaN、””。
  2. 其余所有的值均为Truthy,当进行逻辑判断时均为true(如!![]==true)。Infinity、空数组、”0″都是Truthy值。
    也就是说false是属于falsy的,任何

真是学无止境,之前在做react项目的时候,会碰到用0去判断,就会出现明明是0,按理说应该是false的条件,但是还是渲染出来了,现在知道了,原来0是falsy,和false还是有区别的,而且react遇到falsy还是可以渲染的,一定要是false才可以。