`
sangei
  • 浏览: 337239 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

undefined

阅读更多

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 v1;
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 是不能使用的。

var v1;
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"

 
 
 
好文要顶 关注我 收藏该文  
8
0
 
(请您对文章做出评价)
 

posted on 2010-04-08 10:56 冰危节奏 阅读(119375) 评论(8编辑 收藏

 

评论

#1楼   

nice
2013-09-25 17:21 | Tlink  

#2楼   

谢谢了,就是这个问题,搞定,准备下班回家,
2013-09-26 20:09 | tanshaohua  

#3楼   

什么情况下会判断不出来啊,我这边没有问题哦~
2013-11-16 20:42 | 冯翔  

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

也是正确的。
2014-11-06 21:04 | dcb3688  

#5楼   

@dcb3688
四楼

if (reValue== undefined){
alert("undefined");
}
这样判断没有错误,但是,你忽略了一种场景;如果reValue没有声明,浏览器会报错的;而typeof则不会;而且,==可能会涉及强制类型转换;在js中你这种场景建议用“===”,但是js仍会报错;所以楼主的是对的。
2015-04-12 10:02 | 水中月120  

#6楼   

只能用 === 运算来测试某个值是否是未定义的,因为 == 运算符认为 undefined 值等价于 null。
2015-08-20 13:54 | 半杯水007  

#7楼   

6楼说的在理,我再来补充一下,关于js中的==与===,==只是进行数值比较,在比较时会进行强制类型转换,所以比较结果不准确,===会进行数值与类型的比较相当于全等,所以在js比较两个数相等时,建议始终使用===进行比较。同时在js当中undefined有点特殊,它既可以作为数据类型,也可以作为一个值对变量赋值,它的数据类型是undefined,而null只是可以作为值赋给变量,并不是数据类型,它的数据类型是object。举些例子:
例一:
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics