如何解决为什么在if语句中不需要完整的布尔语句?
我想知道为什么“如果(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
值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。