JS 中如何判断 undefined
JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断。
以下是不正确的用法:
var exp = undefined;
if (exp == undefined)
{
alert("undefined");
}
exp 为 null 时,也会得到与 undefined 相同的结果,虽然 null 和 undefined 不一样。注意:要同时判断 undefined 和 null 时可使用本法。
var exp = undefined;
if (typeof(exp) == undefined)
{
alert("undefined");
}
typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
以下是正确的用法:
var exp = undefined;
if (typeof(exp) == "undefined")
{
alert("undefined");
}
--------------------------------------------------------------------------------
JS 中如何判断 null
以下是不正确的用法:
var exp = null;
if (exp == null)
{
alert("is null");
}
exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样。注意:要同时判断 null 和 undefined 时可使用本法。
var exp = null;
if (!exp)
{
alert("is null");
}
如果 exp 为 undefined 或者数字零,也会得到与 null 相同的结果,虽然 null 和二者不一样。注意:要同时判断 null、undefined 和数字零时可使用本法。
var exp = null;
if (typeof(exp) == "null")
{
alert("is null");
}
为了向下兼容,exp 为 null 时,typeof 总返回 object。
var exp = null;
if (isNull(exp))
{
alert("is null");
}
JavaScript 中没有 isNull 这个函数。
以下是正确的用法:
var exp = null;
if (!exp && typeof(exp)!="undefined" && exp!=0)
{
alert("is null");
}
未赋值,就是 undefined
var v2 = "v2";
v3 = "v3";
// v4; // 既没有使用 var,也没有为其赋值。
alert(typeof v1); // undefined
alert(typeof v2); // string
alert(typeof v3); // string
alert(typeof v4); // undefined
v1、v4 的 typeof 是 undefined,他们的特点是:
- v1 声明了,但没有赋值;
- v4 既没有声明,也没有赋值;
划去相同的部分,也就是说只要没有赋值 typeof 就是 undefined。还有一种情况没说:var v1 = undefined;,这等效于 var v1,所以没说。
虽然均是 undefined,但使用有所不同
那么上面的 v1 和 v4 有没有其他区别呢,当然有了,这表现在使用上,v1 虽然未被定义,但可以使用,而 v4 是不能使用的。
function foo(p)
{
}
foo(v1); // 运行正常
foo(v4); // v4 未定义错误
js判断undefined类型
if (reValue== undefined){
alert("undefined");
}
发现判断不出来,最后查了下资料要用typeof
方法:
if (typeof(reValue) == "undefined") {
alert("undefined");
}
typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
评论
#4楼
1
2
3
|
if
(reValue== undefined){
alert(
"undefined"
);
}
|
没有问题,问题是你写成:
1
2
3
|
if
(reValue==
"undefined"
){
alert(
"undefined"
);
}
|
把undefined写成字符串了,
undefined是类型的结果,不是字符串,当typeof后打印是字符串类型,所以:
1
2
3
|
if
(
typeof
(reValue) ==
"undefined"
) {
alert(
"undefined"
);
}
|
也是正确的。
#5楼
四楼
if (reValue== undefined){
alert("undefined");
}
这样判断没有错误,但是,你忽略了一种场景;如果reValue没有声明,浏览器会报错的;而typeof则不会;而且,==可能会涉及强制类型转换;在js中你这种场景建议用“===”,但是js仍会报错;所以楼主的是对的。
#7楼
例一:
var reg;
alert(reg===undefined);//true
例二:
alert(reg===undefined);//报错,reg is not defined
例三:
var reg;
alert(reg==null);//true,事实上reg的值是undefined,但是我使用==进行比较,这里进行了强制数据类型转换,因而结果是true
例四:
alert(typeof reg==="undefined");//true