首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript检查not null

javascript检查not null
EN

Stack Overflow用户
提问于 2010-03-11 14:10:43
回答 10查看 489.6K关注 0票数 157

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

代码语言: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");
}

你知道为什么会这样吗..??

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-03-11 14:12:58

这是因为val不是null,而是以字符串形式包含'null'

尝试使用“null”进行检查

代码语言:javascript
复制
if ('null' != val)

有关何时起作用以及为什么起作用的解释,请参阅the details below

票数 86
EN

Stack Overflow用户

发布于 2010-03-11 14:25:23

这将为你做这个把戏

代码语言:javascript
复制
if (!!val) {
    alert("this is not null")
} else {
    alert("this is null")
}
票数 158
EN

Stack Overflow用户

发布于 2016-01-16 02:53:59

有3种方法可以检查"not null“。我的建议是使用Strict Not版本。

1. Strict Not版本

代码语言:javascript
复制
if (val !== null) { ... }

Strict Not版本使用“严格相等比较算法”http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6。由于严格相等比较算法不会对值进行类型转换,因此!==的性能比!=运算符更快。

2.非严格非版本

代码语言:javascript
复制
if (val != 'null') { ... }

非严格版本使用“抽象相等比较算法”http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3。与!==运算符相比,!=的性能较慢,因为抽象相等比较算法会对值进行类型转换。

3.双非版本

代码语言:javascript
复制
if (!!val) { ... }

双重Not版本!!比严格Not版本!==和非严格Not版本!= (https://jsperf.com/tfm-not-null/6)都具有更快的性能。但是,它会将“False值”(如undefinedNaN )类型转换为False (http://www.ecma-international.org/ecma-262/5.1/#sec-9.2),这可能会导致意外的结果,而且由于没有显式声明null,因此可读性较差。

票数 113
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2422946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档