javascript检查是否为NOTNULL

javascript检查是否为NOTNULL,javascript,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*

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

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

你知道为什么会这样吗

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

尝试使用“null”进行检查

if ('null' != val)

有关此操作的时间和原因的解释,请参阅。

您应该使用严格的
不等于
比较运算符
==“null”
,则您将无法访问
其他

使用
==作为
=
将使您进入一个非Transitive JavaScript真值表奇怪的世界。

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

这将为您带来好处

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

这应该行得通

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

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

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

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

有3种方法可以检查“NOTNULL”。我的建议是使用严格的Not版本

1.严格版本 严格的Not版本使用“严格相等比较算法”。
==
具有更快的性能=运算符,因为严格相等比较算法不会类型转换值

2.非严格版本 非严格版本使用“抽象等式比较算法”。
=的性能比
慢==运算符,因为抽象相等比较算法类型化值

3.双不版本 双重版本不是
的性能比严格版本和非版本都快==和非严格非版本
=()。但是,它会将诸如
undefined
NaN
之类的“False”值键入False(),这可能会导致意外的结果,并且它的可读性较差,因为
null
没有明确说明。

检查

如果值不是:

null
undefined
NaN
empty string ("")
0
false

CW发生的原因是6位以上的用户编辑了该问题。!==而不是=@你知道什么是CW吗?@snoobdog从技术上讲,双不(!!)是编程上的失礼。它实际上相当于
if(val)
,读起来更清晰。我会坚持下去(FYUJWAL,!!!VAL应该在C或C++中工作),请参阅JavaScript的“真实性”值:如果(布尔!(VALL))如何?!只是一个双重否定,所以它字面上是说如果(val.exists)。不过我还是喜欢它的样子!如果
val=0,此操作将失败,因为
!!0
的计算结果为假。它不是简单的双负。这是一个双重否定。您基本上是将变量转换为布尔值。关于这个主题有很多话要说,但只要说在变量为
0
false
null
未定义的
或某个这样的值解析为
true
,并且有一个!,您将得到
false
for!!。如果有的话,应该少用。这很奇怪<代码>!!瓦尔为我工作,但瓦尔==空
没有。为什么?@TheLogicGuy-val的数据类型是什么<代码>控制台.log(val类型)
编号。该代码从数组中删除“坏”值(null、0等)。下面是代码:@TheLogicGuy-您的实际问题与null无关。NaN未正确过滤-这将始终返回true。这应该有用:!(isNaN(val)&(typeof val!=“未定义”))。在Javascript中有一个称为“Truthy”和“false”的概念。双重非运算符
将删除的不仅仅是
null
。它还将
NaN
undefined
转换为false。这就是为什么在使用双not运算符时,阵列会正确过滤
.应该是如果(null!=val)在某种程度上与问题中的quotesr.x不起作用,null是字符串…您的情况可能不同如果数据输入表单中不接受她的名字,除非您想特别检查
未定义的
null
,否则null将不会高兴。在这种情况下,
val!=对于
未定义的
null
而言,null将返回
true
,但对于其他虚假值,如
0
,则不返回。
if (val != 'null') { ... }
if (!!val) { ... }
if(value) {
}
null
undefined
NaN
empty string ("")
0
false