如何在JavaScript中检查空值?我写了下面的代码,但没用。

if (pass == null || cpass == null || email == null || cemail == null || user == null) {      

    alert("fill all columns");
    return false;  

}   

如何在JavaScript程序中查找错误?


当前回答

“Object.is()”方法可用于确定两个值是否相同。因此,您可以使用它来检查对象是否为空。

检查空值

let testA = null; //null
console.log(Object.is(testA, null)); //true //null === null

if(Object.is(testA, null)) {
  console.log("This is a Null Value");
}
Output:
true
This is a Null Value

检查未定义的值

let testB; //undefined
console.log(Object.is(testB, undefined)); //true //undefined === undefined

if(Object.is(testB, undefined)) {
  console.log("This is an undefined Value");
}
Output:
true
This is an undefined Value

如果要同时检查undefined和null,请使用此选项。

let testC; //undefined
console.log(Object.is(testC, undefined)); //true //undefined === undefined
console.log(Object.is(testC, null)); //false //undefined === null

if (Object.is(testC, undefined) || Object.is(testC, null)){
  console.log("The value is either undefined or null");
}

if (!(Object.is(testC, undefined) || Object.is(testC, null))){
  console.log("The value is neither undefined nor null");
}
Output:
true
false
The value is either undefined or null

看看他们:https://onecompiler.com/javascript/3ymdqd34v

Mozilla解释:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is

其他回答

只要在所有地方用==替换==即可。

==是一个松散或抽象的相等比较

==是严格的相等比较

有关更多详细信息,请参阅MDN关于平等比较和相同性的文章。

要检查javascript中的undefined和null,只需编写以下内容:

if (!var) {
        console.log("var IS null or undefined");
} else {
        console.log("var is NOT null or undefined");
}

通过显式检查null但使用简化的语法来改进已接受的答案:

if ([pass, cpass, email, cemail, user].every(x=>x!==null)) {
    // your code here ...
}

//测试let pass=1,cpass=1,email=1,cemail=1,user=1;//只是为了测试if([pass,cpass,email,cemail,user].every(x=>x!==null)){//你的代码在这里。。。console.log(“Yayy!它们都不是空的”);}其他{console.log(“哎呀!至少其中一个为空”);}

空值的简单解决方案:

function isEmpty(value) {
        return (
            value === null || value === undefined || value === '' ||
            (Array.isArray(value) && value.length === 0) ||
            (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0)
        );
    }

我做了一个非常简单的功能,效果很好:

function safeOrZero(route) {
  try {
    Function(`return (${route})`)();
  } catch (error) {
    return 0;
  }
  return Function(`return (${route})`)();
}

路线是任何一条价值链都会爆炸。我将它用于jQuery/cacherio和对象等。

示例1:一个简单的对象,例如this const testObj={items:[{val:'haya'},{val:null},{val:'hum!'}];};。

但它可能是一个非常大的物体,我们甚至没有制造过。所以我通过了:

let value1 = testobj.items[2].val;  // "hum!"
let value2 = testobj.items[3].val;  // Uncaught TypeError: Cannot read property 'val' of undefined

let svalue1 = safeOrZero(`testobj.items[2].val`)  // "hum!"
let svalue2 = safeOrZero(`testobj.items[3].val`)  // 0

当然,如果您愿意,可以使用null或“无值”。。。任何适合您需要的。

通常,如果找不到DOM查询或jQuery选择器,可能会抛出错误。但使用类似于:

const bookLink = safeOrZero($('span.guidebook > a')[0].href);
if(bookLink){
  [...]
}