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