JavaScript数据类型

来源:互联网 发布:网络是利与弊 编辑:程序博客网 时间:2024/04/30 17:53

前言:

    ECMAScipt中的变量又是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。所以javascript中用var关键字来定义变量,所以无法确定变量一定会存储什么值,也就不知道变量到底会是什么类型,因为可以随时改变变量的类型。今天这篇文章就和大家一起来学习javascript中的类型,虽然很简单,但是我感觉数据类型是学习某种语言的前提,所以必须掌握它。

      下面来看看到底有哪些数据类型呢?

        

 再说数据类型之前我们必须应该了解typeof操作符:

       typeof操作符是用来检测变量的数据类型。对于值或变量使用typeof操作如会返回如下的字符串

  

typeof操作符可以操作变量,也可以操作字面量。


1、Undefined类型

Undefined类型只有一个值,即特殊的Undefined。在使用var声明变量,但没有对其初始化时,这个变量的值就是Undefined。

<span style="font-family:KaiTi_GB2312;font-size:18px;">var box;  var box1 = undefined;    //申明的时候没有赋值,那么解析器会自动给其赋值为undefined,所以输出为true  alert(box == undefined)//true  alert(box1 == undefined)//true  //根据上面所说的typeof返回的是字符串"undefined"所以输出为true  alert(typeof box == "undefined")//true  </span>
注意:我们在定义变量的时候,尽可能的不要只声明,不赋值。

2、NULL类型

 Null也是一个只有一个值得数据类型,它的值就是null,任何变量只要给其赋值为null的话这个变量的数据类型就是Null类型。null值表示控对象指针,所以申明的变量要是想用来保存对象并且在申明之初还不能确定具体保存哪个对象的时候就将其赋值为null,在使用的时候只要检查该变量是否为null就可以知道该变量是否保存了对象。

<span style="font-family:KaiTi_GB2312;font-size:18px;">var box=null;alert(typeof box);   //object// typeof 操作符检测null会返回objectvar box=null;if(box!=null){alert('box对象已存在');    }//如果定义的变量准备在将来保存对象,那么最好将该变量初始化为null//当检查null值就知道是否已经分配了对象引用了。alert(undefined==null);  //true//undefined是派生自null的,因此返回true</span>


3、Boolean类型

在javascript中Boolean类型用还是比较多的一种简单数据类型,它有两个值,分别是true和false,因为在javascript中字母是区分大小写的,所以True和False不是Boolean的值。
可以通过如下方式给Boolean类型的变量赋值:

<span style="font-family:KaiTi_GB2312;font-size:18px;">var test = true;    var test1 = false; </span>

 调用Boolean()方法可以将任何类型的值转化成与之相对应的Boolean类型的值,也就是可以将其转化成true或者false。
例如:

<span style="font-family:KaiTi_GB2312;font-size:18px;">//将非空字符串转化成true  alert(Boolean("a"))//true  //将空字符串转化成false  alert(Boolean(""))//false  //将对象转化成true  alert(Boolean({a:"a"}))//true  </span>
将各种类型的值转化成Boolean类型的规则如下:

4、Number类型

  javascript为了支持各种数值类型,定义了不同数值字面量格式


<span style="font-family:KaiTi_GB2312;font-size:18px;">var box=100;    //十进制整数var box=12.0;   //小数点后面是0,转成12//由于浮点数值需要的内存空间比整形数值大两倍,所以进行转换var box=0/0;                   //NaNvar box=12/0;                 //Infinityvar box=12/0*0               //NaN//NaN 即非数值(Not a Number)是一个特殊的值alert(NaN+1);                   //NaNalert(NaN=NaN);              //false//任何与NaN进行运算的结果均为NaNalert(isNaN(NaN));             //true//ECMAScript提供了isNaN()函数,用来判断这个值到底是不是NaNalert(parseInt('456Lee'))   //456 返回整数部分,在js程序中经常用这个函数把字符转换成数字</span>

5、String 类型

JavaScript中的字符串String一个特殊的基本数据类型,在很多语言中,String是以对象的形式表示的,但在JavaScript里,String是当作一种基本数据类型,是通值传递的方式来操作。但它是一个比较特殊的基本类型。

<span style="font-family:KaiTi_GB2312;font-size:18px;">var strA = "这是字符串"; var strB = strA; strA = "这是另外一个字符串"; alert("strB="+strB);     //strB=这是字符串</span>

从运行结果可以看到,仿佛strA通过值传递的方式复制了一份给了strB。当strA改变的时候,strB并没有改变,似乎我们已经可以下结论,String就是个基本数据类型。

<span style="font-family:KaiTi_GB2312;font-size:18px;">  var a = "myobject"; a.name = "myname";//为字符串a动态添加name属性 alert("a.name="+a.name); //访问a的name属性,结果显示:a.name=undefined</span>
运行结果显示,String无法当作一个对象来处理。这也证明了一点:基本类型虽然也可以添加属性,也不会报错,经测试添加完之后却是无法访问的,实际上,javascript里的String是不可以改变的,javascript也没有提供任何一个改变字符串的方法和语法。

String类型包含了一些特殊的字符字面量



6、Object类型 

对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。

<span style="font-family:KaiTi_GB2312;font-size:18px;">var o = new Object();</span>
Object的每个实例都具有下列属性和方法:

  constructor——保存着用于创建当前对象的函数

  hasOwnProperty(propertyName)——用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))

   isPrototypeOf(object)——用于检查传入的对象是否是另一个对象的原型

  propertyIsEnumerable(propertyName)——用于检查给定的属性是否能够使用for-in语句来枚举

   toString()——返回对象的字符串表示

   valueOf()——返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同


小结:

     Undefined、Null、Boolean、Number、String是javascript中的基本数据类型,而Object属于引用类型。用typeof检测其他类型会返回相应的字符串,但是检测null或对象时,会返回”object",Boolean、Number、String 这三个是Javascript中的基本包装类型,也就是这三个其实是一个构造函数,他们是Function的实例,是引用类型。JavaScript是最麻烦的一种语言,没有之一,所有要想熟悉,还得多加练习啊。

0 0
原创粉丝点击