第4节 数据类型

  ECMAScript共有6种数据类型,5种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number和String,还有一种复杂数据类型————Object,Object本质上是由一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都是上述6种数据类型之一。


typeof操作符

  因为ECMAScript是松散类型的,因此需要一种手段检测给定变量的数据类型———typeof就是负责提供这方面信息的操作符。
  对一个值使用typeof操作符可能返回下列某个字符串:

返回值 条件
“undefined” 如果这个值未定义
“boolean” 如果这个值是布尔值
“string” 如果这个值是字符串
“number” 如果这个值是数值
“object” 如果这个值是对象或null
“function” 如果这个值是函数

demo:

    var test1;
    var test2 = true;
    var test3 = 'wuhen';
    var test4 = 100;
    var test5 = new Object();
    var test6 = function(){};
    document.write(typeof test1 +"<br>");   //返回 undefined
    document.write(typeof test2 +"<br>");   //返回 boolean
    document.write(typeof test3 +"<br>");   //返回 string
    document.write(typeof test4 +"<br>");   //返回 number
    document.write(typeof test5 +"<br>");   //返回 object
    document.write(typeof test6 +"<br>");   //返回 function

PS:

  • typeof是一个操作符而不是函数
  • 因为特殊值null被认为是一个空的对象引用,所以调用typeof会返回”object”
  • 函数在ECMAScript中是对象,而不是一种数据类型

Undefined类型

  Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
  包含undefined值得变量和尚未定义的变量不一样,对未定义的变量操作会报错。不过对它们执行typeof都会返回undefine值,所以尽量对定义的变量初始化,方便以后检测变量是否定义。
demo:

    var test7;
    document.write(test7 +"<br>");           //返回 undefined
    //document.write(test8 +"<br>");         //未定义,会报错
    document.write(typeof test7 +"<br>");   //返回 undefined
    document.write(typeof test8 +"<br>");   //返回 undefined

Null类型

  Null类型同样只有一个值,即特殊的null。null值表示一个空对象指针,而这也正是使用typeof操作符检测null值返回”object”的原因。
  如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化null而不是其他值。
  实际上,undefined值是派生自null值,因此对他们的相等性是true。
demo:

    var test9 = null;       //定义一个未初始化的对象
    document.write(null == undefined);      //返回 true
    document.write(typeof null);            //返回 object

Boolean类型

  Boolean类型只有2个两个字面值:true和false。
  虽然Boolean类型只有两个,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。
demo:
  这里就把最上面定义的5个变量直接拿下来转换了,可以看到不同的对象不同的情况会转换成为不同的布尔值。

    document.write(Boolean(test1) +"<br>"); //返回 false
    document.write(Boolean(test2) +"<br>"); //返回 true
    document.write(Boolean(test3) +"<br>"); //返回 true
    document.write(Boolean(test4) +"<br>"); //返回 true
    document.write(Boolean(test5) +"<br>"); //返回 true

学习总结

  数据类型还有Number类型、String类型、Object类型的笔记没有写,这几个类型的内容有些多打算单独拿出来写,让篇幅小一些,说实话是打字打累,哈哈。
  学习完JavaScript的数据类型之后,让我对它有了新的认识。它没有其他语言那么多数据类型,但是每个数据类型的知识和功能细而多,不可忽视任何一个小小的知识点啊。还学习了typeof这个重要的操作符,有了它可以识别变量真面目。明天继续更新剩下的几个类型的学习笔记,给自己加个油!


猜你喜欢

转载自blog.csdn.net/kelinfeng16/article/details/81591346