无法找出空条件的JavaScript

时间:2019-10-16 05:28:06

标签: javascript

我在javascript中有以下代码,该代码确定Prov的值是否为null或未定义 但不幸的是,它无法这样做,并且能够更新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,
 }

6 个答案:

答案 0 :(得分:1)

如果您的初始状态如下

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

您的逻辑尝试检查它是否为null,然后添加Prov,这将更新Prov。 如果您不想在Prov具有虚假值(null,undefined,0,NaN,false)时更新它,请更改

        if (!this.state.Prov) 

        if (this.state.Prov) {

答案 1 :(得分:0)

在第一个if条件中,您写了“ stat”而不是“ state”,我认为它应该起作用,让我们知道它是否起作用

答案 2 :(得分:0)

您的值为空,所以当您这样做

 !this.state.<member name>

将null更改为true(如boolean(null)= false和!false = true) 如果您的this.state.Prov未定义,则其值也将为true。
因此,所有if语句的评估结果均为true,因此会更新其值。

答案 3 :(得分:0)

因为设置了PROV后,即使没有设置名称和ID,您也会返回true吗?

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;
    }
}

答案 4 :(得分:0)

可能您需要使用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;
    }
}

答案 5 :(得分:0)

代码中除了文件名之外,文件名在哪里?如果应该设置省份并返回true,则代码内部应具有else条件。