无法找出空条件 javascript

  • 本文关键字:条件 javascript javascript
  • 更新时间 :
  • 英文 :


>我在javascript中有以下代码,可以找出Prov的值是否为空或未定义 但不幸的是,它无法这样做,并且它能够更新Prov的值。下面的代码有什么问题

valid = () => {
debugger;
if (!this.state.Name && !this.state.ID) {
if (!this.state.Prov) {
debugger;
this.setState({
...this.state,
Prov: 'Please enter Province...'
});
return false;
}
}
else {
return true;
}
}

在上面的代码中,状态定义如下

this.state = {
Name: null,
ID: null,
Prov: null,
}

如果您的初始状态如下

this.state = {
Name: null,
ID: null,
Prov: null,
}

您的逻辑尝试检查它是否为 null,然后添加 Prov,这将更新 Prov。 如果您不想在Prov具有错误值(null,未定义,0,NaN,false(时更新Prov,请更改此设置

if (!this.state.Prov) 

if (this.state.Prov) {

在第一个条件中,如果您写了"stat"而不是"state",我认为它应该有效,让我们知道它是否有效

因为设置PROV后您将返回true,即使未设置名称和ID,也许?

valid = () => {
debugger;
if (!this.state.Name && !this.state.ID) {
if (!this.state.Prov) {
debugger;
this.setState({
...this.state,
Prov: 'Please enter Province...'
});
return false;
}
}
else {
return true;
}
}

可能你需要一个 OR (||( 案例:

valid = () => {
//check if any of these are empty 
if (!this.state.Name || !this.state.ID || !this.state.Prov) {
// if prov is empty
if (!this.state.Prov) {
this.setState({
...this.state,
Prov: 'Please enter Province...'
});
return false;
}
// if name is empty
if (!this.state.Name) {}
// if ID is empty
if (!this.state.ID) {}
}
else {
return true;
}
}

你的值是空的,所以当你这样做时

!this.state.<member name>

它将 null 更改为 true(因为布尔值(null(=false 和 !false=true( 如果你的 this.state.Prov 未定义,它也值为 true。
所以你所有的if语句的计算结果都是true,所以它更新了值。

除了文件名之外,代码中的文件名在哪里,如果应该设置省并返回 true,您的代码应该在内部有一个 else 条件。

最新更新