<html> <head> <title>JS</title> <script type="text/javascript"> //这一讲我们来看看Undefined类型有哪些比较特别或值得注意的地方。 function test(){ undefined==undefined; alert(typeof undefined); var undefined="123"; alert(typeof undefined); undefined=123; alert(typeof undefined); undefined=true; alert(typeof undefined); /* 结果依次是undefined,string,number,boolean undefined赋值后可以当一个普通变量来用 */ } function test1() { alert(undefined==undefined); alert(NaN==NaN); /* undefined与自身相等,不像NaN一样自己不等于自己 */ } function testFun() { /* 空函数,什么都不做 */ } function test2() { alert(typeof testFun); alert(typeof testFun()); /* 结果分别是 function,undefined 第一个是函数的引用 第二个直接调用函数 如果一个函数没有明确返回值时那么它的返回值就是undefined */ } function test3() { alert(undefined==null); /* 值undefined实际上是从值null派生来的,所以undefined == null undefined 是声明了变量但是没有初始化时赋予该变量的值, null表示尚未存在的对象 */ } /* 值undefined并不同于未定义的值 这句话该怎么理解呢? */ function test4() { var temp1; alert(typeof temp1); alert(typeof temp2); alert(temp1+1); alert(temp2+1); /* 首先明确变量声明但未初始化和变量未定义(或声明)是两个不同的概念 temp1属于前者temp2属于后者,两者都被初始化为undefined 但是typeof运算符并不区分这两种值 对于未定义的变量temp2虽然他的默认初始值为undefined但是还是不能拿它来进行其它 运算。 */ } </script> </head> <body> <input type="button" onclick="test4()" value="Click"> </body> </html>
总结一下
以下三种情况typeof 返回类型为undefined
1. 当变量未初始化时
2. 变量未定义时
3. 函数无明确返回值时(函数没有返回值时返回的都是undefined)
undefined 并不等同于未定义的值,typeof 并不真正区分是否是未定义