问题描述
我想知道为什么“如果(ethos [name])”已经足够了?因为我会写if(name = ethos [name])。这是什么意思?谢谢。
constructor(props) {
super(props);
this.state = {
myStateVar: []
}
}
static getDerivedStateFromProps(props,state) {
if (props.myStateVar !== state.myStateVar) {
return {
myStateVar: props.myStateVar
}
}
toggle() //Need to call the function each time when we get the props update
return null;
}
toggle() {
this.setState({
otherStateVar: []
})
}
解决方法
JavaScript具有7个伪造的值0
,0n
,null
,undefined
,false
,NaN
和空字符串{{ 1}}。对于您的情况,您的''
返回的if
是伪造的值之一,因此undefined
足以评估伪造的条件。
if (esthos[name])
或者,正如@Titulum所说的...
console.log(esthos[name]) //-> undefined
以相同的方式,您可以仅使用console.log(!!esthos[name]) //-> false
检查数组是否为空:
if(esthos.length)
const esthos = []
console.log(esthos.length) //-> 0 which is a falsy value
// or
console.log(!!esthos.length) //-> false
就足够了,因为它将返回if (esthos.length)
,这是JavaScript中的虚假值之一,或者返回与0
不同的数字,这是事实。
if (esthos[name])
检查ethos[name]
处保存的值是否为truthy
。要将其显式转换为boolean
,可以执行if (!!esthos[name])
。这样做的原因是javascript使用了truthy
和falsy
值。