ria*_*ria 121 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");
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会这样发生.. ??
use*_*390 142
这将为你做到这一点
if (!!val) {
alert("this is not null")
} else {
alert("this is null")
}
Run Code Online (Sandbox Code Playgroud)
Ars*_*yan 70
这是因为val不是null
,但包含'null'
为字符串.
尝试检查'null'
if ('null' != val)
Run Code Online (Sandbox Code Playgroud)
有关何时以及为何有效的说明,请参阅下面的详细信息.
tfm*_*gue 68
有3种方法可以检查"not null".我的建议是使用Strict Not Version.
if (val !== null) { ... }
Run Code Online (Sandbox Code Playgroud)
Strict Not Version使用"严格的平等比较算法" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6.由于严格的等式比较算法没有对类型进行类型转换!==
,因此它具有比!=
运算符更快的性能.
if (val != 'null') { ... }
Run Code Online (Sandbox Code Playgroud)
非严格版本使用"抽象平等比较算法" http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3.在!=
具有较低的性能,比!==
因为抽象平等比较算法类型转换值操作.
if (!!val) { ... }
Run Code Online (Sandbox Code Playgroud)
Double Not Version !!
比Strict Not Version !==
和Non-Strict Not Version !=
(https://jsperf.com/tfm-not-null/6)具有更快的性能.然而,它会强制转换,如"Falsey"的价值观undefined
,并NaN
为假(http://www.ecma-international.org/ecma-262/5.1/#sec-9.2),这可能导致意外的结果,它具有可读性变得更糟,因为null
没有明确说明.
Ply*_*ynx 28
使用!==
as !=
会让你进入一个非传递JavaScript真值表古怪的世界.
小智 8
检查https://softwareengineering.stackexchange.com/a/253723
if(value) {
}
Run Code Online (Sandbox Code Playgroud)
如果 value 不是以下值,则评估结果为 true:
null
undefined
NaN
empty string ("")
0
false
Run Code Online (Sandbox Code Playgroud)
您应该使用严格not equals
比较运算符,!==
以便如果用户输入,"null"
那么您将无法访问else
.
这应该可以正常工作..
if(val!= null)
{
alert("value is "+val.length); //-- this returns 4
}
else
{
alert("value* is null");
}
Run Code Online (Sandbox Code Playgroud)