你的位置:首页 > Java教程

[Java教程]关于javascript中数据类型的一些总结


  ECMAScript中有5种简单数据类型(也叫基本数据类型):Undefined,Null,Number,String,Boolean。还有一种复杂的数据类型———Object,Object本质是有一组无序的键值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据类型之一。因为ECMAScript数据类型具有动态性,因此的确没有必要再定义其他类型数据的必要了。

  在判断给定变量的数据类型时候,就要用到typeof了(注:typeof是一个操作符而不是函数)。使用typeof 操作符可能返回下列某个字符串:

  “undefined”——————如果这个值没有定义;

  “boolean”——————如果这个值是布尔值;

  “string”——————如果该值为字符串;

  “number”——————如果该值为数值或NaN;

  “object”——————如果这个值是对象或Null;

  “function”——————如果这个值为函数。

例如: 

1     var str = 'something';2       alert(typeof str);        //string3       alert(typeof (str));      //string4       alert(typeof 99);        //number        

  例子表明:typeof操作符的操作数可以是变量(str),也可以是数值字面量。注意:typeof是一个操作符而不是函数,因此例子中的圆括号尽管可以使用,但不是必须的。

  下面分别介绍一下这几种数据类型的一些特点:

  1、Undefined类型

    Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化的时候,这个变量的值就是undefined,例如:    

    <script type="text/javascript">      var message ;      alert(message);  //undefined;      alert(message == undefined);//true      var a = undefined;      alert(a == undefined);//true      alert(a);//undefined    </script>

   注:这个例子的undefined显式初始化了变量a。但是我们没有必要这么做,因为未经初始化的值默认就会取得undefined的值(例如:例子中的message)。

    另外,此处还有一点需要注意    

1     <script type="text/javascript">2       var message ;3       alert(message);  //undefined;4       alert(message == undefined);//true5       alert(a);//此处a没有定义,也没有声明,浏览器会报错Uncaught ReferenceError: a is not defined6     </script>

    但是,令人困惑的是:对未初始化的变量执行typeof操作符会返回undefined值,而对未声明的变量执行typeof操作符同样也会返回undefined值。

1     <script type="text/javascript">2       var message ;3       alert(typeof message);  //undefined;4       alert(typeof a);//undefined;5     </script>

    结果表明,对未初始化和未声明的变量执行了typeof操作符都返回了undefined;这个结果有其逻辑上的合理性。因为虽然这两种变量从技术角度看有本质的区别,但是实际上无论对哪种变量也不可能执行真正的操作。

    2、Null类型

    Null类型是第二个只有一个值的数据类型(这点和undefined一样),这个特殊的值是null;从逻辑上讲,null值表示一个空对象指针,这也是为什么用typeof操作符检测null为object的原因所在。typeof null 会返回 object。

    实际上,undefined值是派生自null值的,因此ECMA-262规定他们的相等性测试要返回true;

    alert(null==undefined);     //true

    尽管null和undefined有这样的关系,但是他们的用途大不相同,如前述,在任何情况下都没有必要把一个变量的值显示的设置为undefined,可是同样的规则对null不适用,换句话说,只要意在保存对象的变量还没有真正的保存对象,就应该明确的为该变量保存null值,这样做不仅可以体现null作为空指针的惯例,而且还有助于进一步区分null和undefined。

   3、Boolean 类型