javascript检查不为null

时间:2010-03-11 06:10:43

标签: javascript

下面是一段代码片段,我们在其中检索表单值。 在进一步处理之前,检查该值是否为空..

var val = document.FileList.hiddenInfo.value;
alert("val is " + val);  // this prints null which is as expected
if (val != null)
{
   alert("value is "+val.length); // this returns 4
}
else
{
   alert("value* is null");
}

任何想法为什么会这样发生...... ??

10 个答案:

答案 0 :(得分:133)

这将为您解决问题

if (!!val) {
    alert("this is not null")
} else {
    alert("this is null")
}

答案 1 :(得分:65)

这是因为val不是null,而是包含'null'字符串。

尝试检查'null'

if ('null' != val)

有关此操作的时间和原因的说明,请参阅the details below

答案 2 :(得分:56)

有三种方法可以检查" not null"。我的建议是使用Strict Not Version。

1。严格不是版本

if (val !== null) { ... }

严格非版本使用"严格的等式比较算法" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6!==具有比!=运算符更快的性能,因为严格等式比较算法不具有类型转换值。

2。非严格不版本

if (val != 'null') { ... }

非严格版本使用"抽象等式比较算法" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3!=的性能低于!==运算符,因为抽象等式比较算法对值进行了类型化。

3。双重不版本

if (!!val) { ... }

Double Not Version !!的性能比Strict Not Version !==和Non-Strict Not Version !=https://jsperf.com/tfm-not-null/6)更快。但是,它会被强制转移" Falsey" undefinedNaN之类的值为False(http://www.ecma-international.org/ecma-262/5.1/#sec-9.2)可能导致意外结果,并且由于null未明确说明,因此可读性更差。

答案 3 :(得分:26)

使用!==作为!=会让您进入一个非传递性JavaScript真值表奇怪的世界。

答案 4 :(得分:7)

您应该使用严格的not equals比较运算符!==,这样,如果用户输入"null",那么您将无法访问else

答案 5 :(得分:4)

可能是因为val的值实际上是字符串"null"而不是值null

答案 6 :(得分:3)

这应该可以正常工作..

   if(val!= null)
    {
       alert("value is "+val.length); //-- this returns 4
    }
    else
    {
       alert("value* is null");
    }

答案 7 :(得分:2)

如果您希望能够将0包含为有效值:

if (!!val || val === 0) { ... }

答案 8 :(得分:1)

选中https://softwareengineering.stackexchange.com/a/253723

if(value) {
}

如果值不为真,则计算为true

null
undefined
NaN
empty string ("")
0
false

答案 9 :(得分:0)

这将有效:

if (val) {
    alert("Not null");
} else {
    alert("Null");
}