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

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

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

}   

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


当前回答

试试看:

if (!variable && typeof variable === "object") {
    // variable is null
}

其他回答

在JavaScript中,没有字符串等于null。

当pass为空字符串时,您可能希望pass==null为真,因为您知道松散的相等运算符==执行某些类型的强制。

例如,此表达式为true:

'' == 0

相反,严格相等运算符==表示这是错误的:

'' === 0

假定“”和0大致相等,您可以合理地推测“”和null大致相等。然而,事实并非如此。

此表达式为false:

'' == null

将任何字符串与null进行比较的结果为false。因此,pass==null和所有其他测试始终为false,用户永远不会收到警报。

要修复代码,请将每个值与空字符串进行比较:

pass === ''

如果您确定pass是一个字符串,pass==“”也会起作用,因为只有空字符串与空字符串大致相等。另一方面,一些专家表示,在JavaScript中始终使用严格相等是一种好的做法,除非您特别想执行松散相等运算符执行的类型强制。

如果您想知道哪些值对大致相等,请参阅Mozilla文章中关于此主题的“Sameness比较”表。

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

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

==是严格的相等比较

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

与操作员进行可选检查怎么样?

例如:

// check mother for null or undefined and 
// then if mother exist check her children also
// this 100% sure it support and valid in JS today.
// Apart of that C# have almost the same operator using the same way
if (mother?.children) {

}
else {
 // it is null, undefined, etc...

}

首先,您有一个没有函数体的return语句。这很可能会引发错误。

一个更干净的检查方法是简单地使用!操作员:

if (!pass || !cpass || !email || !cemail || !user) {

    alert("fill all columns");

}

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

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){
  [...]
}