alert(typeof   a=="undefined") 

解决方案 »

  1.   

    true了!
    alert(typeof a=="undefined") // true
      

  2.   

    这样更有趣,哈以下结果为IE6sp1输出!
    var a = document.getElementById("haha");
    alert(a == undefined); // true
    alert(typeof a); // object
      

  3.   

    <script type="text/javascript">
    var a = document.getElementById("haha");
    alert(a == undefined); // true
    alert(null == undefined); //同上,原因它们可以互转换成===就不会有问题了
    alert(typeof a);// object 因为null是object类型的。所以。
    </script>
      

  4.   

    JScript   typeof 运算符
    请参阅
    运算符优先级 | 运算符总结
    要求
    版本 1
    返回一个用来表示表达式的数据类型的字符串。typeof[()expression[]] ;
    expression 参数是需要查找类型信息的任意表达式。说明
    typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。typeof 语法中的圆括号是可选项。返回一个用来表示表达式的数据类型的字符串
      

  5.   

    to 小全其实undefined滴问题俺一直也比较糊涂,
    所以变量一般都会赋初值为null。今天正好讨论一下!
      

  6.   

    undefined本来就是未定义的意思,null是已经定义只是为null值,不难理解吧,我倒是不明白为什么JS能把两者等起来。
      

  7.   

    muxrwc滴解释已经很详细了,俺就补充个小例子吧!俺还是提倡赋初值为null,因为undefined太长,容易拼错,哈L@_@K
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>js.undefined.analysis.html</title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="Gao YiXiang" />
        <meta name="email" content="[email protected]" />
        <meta name="keywords" content="javascript dhtml dom" />
        <meta name="description" content="I love web development." />
    </head>
    <body>
        <script type="text/javascript">
        <!--
    var br = "<br />";
    var output = "";var a = document.getElementById("haha");
    output += "a: " + a + br;
    output += "typeof a: " + typeof(a) + br;
    output += "a==undefined: " + (a==undefined) + br;
    output += "a===undefined: " + (a===undefined) + br;output += br;//output += "b: " + b + br; // 异常!
    output += "typeof(b): " + typeof(b) + br;
    output += "typeof(typeof(b)): " + typeof(typeof(b)) + br;
    //output += "b==undefined: " + (b==undefined) + br; // 异常!
    output += "typeof(b)==\"undefined\": " + (typeof(b)=="undefined") + br;
    //output += "b===undefined: " + (b===undefined) + br; // 异常
    output += "typeof(b)===\"undefined\": " + (typeof(b)==="undefined") + br;document.write(output);/* 输出:a: null
    typeof a: object
    a==undefined: true
    a===undefined: falsetypeof(b): undefined
    typeof(typeof(b)): string
    typeof(b)=="undefined": true
    typeof(b)==="undefined": true */
        //-->
        </script>
    </body>
    </html>
      

  8.   

    改了一点儿!可以说明var滴作用!
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>js.undefined.analysis.html</title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="Gao YiXiang" />
        <meta name="email" content="[email protected]" />
        <meta name="keywords" content="javascript dhtml dom" />
        <meta name="description" content="I love web development." />
    </head>
    <body>
        <script type="text/javascript">
        <!--
    var br = "<br />";
    var output = "";var a = document.getElementById("haha");
    output += "a: " + a + br;
    output += "typeof a: " + typeof(a) + br;
    output += "a==undefined: " + (a==undefined) + br;
    output += "a===undefined: " + (a===undefined) + br;output += br;var b;
    output += "b: " + b + br; // 不写 var b 就会抛异常!
    output += "typeof(b): " + typeof(b) + br;
    output += "typeof(typeof(b)): " + typeof(typeof(b)) + br;
    output += "b==undefined: " + (b==undefined) + br; // 不写 var b 就会抛异常!
    output += "typeof(b)==\"undefined\": " + (typeof(b)=="undefined") + br;
    output += "b===undefined: " + (b===undefined) + br; // 不写 var b 就会抛异常!
    output += "typeof(b)===\"undefined\": " + (typeof(b)==="undefined") + br;document.write(output);/* 输出:a: null
    typeof a: object
    a==undefined: true
    a===undefined: falseb: undefined
    typeof(b): undefined
    typeof(typeof(b)): string
    b==undefined: true
    typeof(b)=="undefined": true
    b===undefined: true
    typeof(b)==="undefined": true */
        //-->
        </script>
    </body>
    </html>
      

  9.   

    2  Undefined类型Undefined类型只有一个值,即undefined
    当声明的变量未初始化时,该变量的默认值是undefined。当声明了变量,而没有初始值时,该变量将被赋予值undefined,即Undefined类型的字面量。
    注意是undefined值,不是"undefined"字符串
    例如:
    var oTemp;
    oTemp变量声明之后没有赋予初始值,这时将被赋予值undefined
    测试:
    var oTemp;
    alert(oTemp == undefined);//将会返回true
    alert(typeof oTemp);//将显示undefined注意:值undefined并不同于未定义的值。但是,typeof运算符并不真正区分这两种值。
    例如:
    var oTemp;
    alert(typeof oTemp);
    alert(typeof oTemp2);
    都将返回undefined,虽然oTemp2并未声明,由于ECMAScript的特性会把oTemp2自动声明为一个全局变量,再进行typeof运算如果直接对oTemp2使用其他运算符,将引起错误,因为那些运算符只能用于已定义的变量
    例如:
    alert(oTemp2 == undefined);
    这里将会出错当函数无明确返回值时,返回的也是值undefined
    例如:
    function a(){}
    alert(typeof a());
    3  Null类型Null类型只有一个值,即Null
    值undefined实际上是从值null派生来的,因此ECMAScript把它们定义为相等的。
    例如:
    alert(undefined == null);//将返回true尽管这两个值相等,但它们的含义不同。
    undefined是声明了变量但未对其初始化时赋予该变量的值
    null用于表示尚未存在的对象
    如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。
      

  10.   

    <script> 
    alert(typeof   a=="undefined") 
    </script>