Javascript的数据类型

  Javascript的数据类型分为基本类型(也可以叫值类型)和引用类型。

  基本类型是值访问的,在程序中可以直接操作;基本类型包括5种数据格式:Undefined、Null、Bollean、Number和String。例如:  

1    var test1=1;//Number 
2    var test2="str";//String 
3    var test3=true;//Bollean 
4    var test4=null;//Null
5    var test5;//Undefined

  

  引用类型是保存在内存中的对象,它们的基类都是Object;在实际操作中我们不能直接访问到它在内存中的位置,操作的是它的引用,它主要分Function、Array、Math、Date和自定义创建的Object对象等。

 

  Object类型

 

  Object类型是JavaScript中使用最多的一种类型。虽然Object的实例不具备多少功能,但对于在应用程序中存储和传输数据而言,它确实是非常理想的选择。

  创建Object类型有两种方法:第一种是使用构造函数的方式创建(即new关键字)  

1     var obj=new Object();//这里可以胜率圆括号,但是不推荐这么做
2 obj.name="Evan"; 3 obj.age=26;

  

  另一种是使用对象字面量的方式创建  

1     var obj={};//与new Object();等价
2     obj.name="Evan";
3     obj.age=26;

  

  对象字面量创建还可以这样表示

1     varo obj={
2            "name":"Evan",//属性也可以用字符串表示
3             "age":26,
4              1:true//可以使用数值表示属性,但是会自动转化成字符串         
5     }

 

   这两种创建Object类型的的效果是等价的,当时我们一般会选择第二种:因为对象字面量创建的时候代码量更少,不需要调用构造函数,而且给人封装的感觉;实际上对象字面量也是向函数传递大量可选参数的首选方式。

 

 

  Function类型

  Function也叫函数、方法。创建函数的方式有两种:

  函数声明的方式,这也是常用的方式。    

1     function fun(){....}

 

  变量定义的方式。  

1   var fun=function(){}

 

  虽然这两种创建函数的方式功能是一样的,但是实际上它们还是有区分的:在预编译的时候,声明的方式会直接给函数分配内存空间,在执行的时候就可以调用了;而定义的方式会吧fun当成变量存起来,在预编译的时候不会赋值,所以在执行的时候会出现未定义的情况。  

 1     var a = 1;
 2     
 3     console.log(add_1(a))
 4     
 5     function add_1(num) {//直接声明
 6         return num + 1;
 7     }
 8     
 9     console.log(add_2(a))
10     
11     var add_2 = function (num) {//变量定义
12         return num + 1;
13     }

  会出现如下结果

  

 

  所以在创建函数的时候,还是推荐使用第一种方式。

 

  Array类型

  数组是Javascript中最常用的类型之一;与其它编程语言中的数组最大的区别是,Javascript中的数组的每一项都可以保存不同类型的数据,也就是说,可以在数组的第一项保存数值,第二项可以保存字符串,第三项可以保存对象...

 

  创建数组的的基本方式有两种:第一种是利用构造函数创建,例如下面的代码所示。  

1     var arr=new Array();

  

  也可以预先规定数组的长度

1     var arr=new Array(4);

  

  如果预先知道了数组应该包含的项,也可以这样创建

1     var arr=new Array(“Jone”,"Bruce","Ken","Danny");

  

  在Javascript中,我们还可以省略new关键字

1     var arr=new Array(4)
2     var arr2=new Array(“Evan”)

  

  第二种创建数组的方式是直接用字面量而不用构造函数的方式:

1   var arr=["Jone","Bruce","Ken","Danny"]  

 

 尽量不要在数组最后一项加逗号,因为兼容性的原因,不同浏览器的处理方式不一样。
1     var arr=["King","Steven",]//在ie8及之前的版本中,会创建一个包含三项的数组,最后一项是Undefined。在其它的浏览器就会省略最后一个逗号。

  

  数组的访问:数组可以直接用下标的方式进行访问

1     var arr=["Jone","Bruce","Ken","Danny"] 
2     alert(arr[1])//Bruce

 

  Javascript中的数组长度是可以自适应的,即使你在定义的时候已经规定它的长度。   

 

Date类型


  JavaScript中的Date类型是在早期Java中的java.util.Date类基础上构建的。为此,Date类型使用自UTC 1970年1月1日零时开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的 285 616年。


  要创建一个日期对象,使用new操作符和Date构造函数即可。


    var now = new Date();

  在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。如果想根据特定的日期和时间创建日期对象,必须传入表示该 日期的毫秒数。为了简化这一计算过程,JavaScript提供了两个方法:Date.parse()和Date.UTC()。

 

  其中,Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。JavaScript没有定 义Date.parse()应该支持哪种格式,因此这个方法的行为因实现而异,而且通常是因地区而异。将地区设置为美国的浏览器通常都接受下列日期格式:


  ● "月/日/年",如:6/13/2204

  ● "英文月名 日,年",如:January 12,2004

  ● "英文星期几 英文月名 日 年 时:分:秒 时区",如:Tue May 25 2004 00:00:00 GMT-0700


  例如,要为2004年5月25日创建一个日期对象,可以使用下面的代码:

  var someDate = new Date(Date.parse("May 25 , 2004"));


  如果传入Date.parse()方法的字符串不能表示日期,那么它会返回NaN。实际上,如果直接将表示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()。换句话说,下面的代码与前面的例子是等价的:

  var someDate = new Date('May 25 , 2004');


  Date.UTC()方法同样也返回表示日期的毫秒数,但它与Date.parse()在构建值时使用不同的信息。Date.UTC()的参数 分别是年份、基于0的月份(一月是0,二月是1,以此类推)。月中的哪一天(1到31)、小时数(0到23)、分钟、秒以及毫秒数。在这些参数中,只有前 两个参数(年和月)是必需的。如果没有提供月中的天数,则假设天数为1;如果省略其他参数,则统统假设为0。

  var y2k = new Date(Date.UTC(2000, 0));//GMT时间2000年1月1日零时  
  var allFives = new Date(Date.UTC(2005,4,5,17,55,55));//GMT时间2005年5月5日下午5:55:55

 

 

  如同模仿Date.parse()一样,Date构造函数也会模仿Date.UTC(),但有一点明显不同:日期和时间都基于本地时区而非GMT来创建的。可以将前面的例子重写如下:

  var y2k = new Date(2000,0); //本地时间2000年1月1日零时  
  var allFives = new Date(2005,4,5,17,55,55);//本地时间2005年5月5日下午5:55:55
 

 Math对象

  JavaScript中的Math对象提供了大量的算术运算功能和数值操作方法。


  JavaScript中的Math对象的与众不同之处在于,它是一个全局对象。在使用Math对象之前,既不需要将一个变量声明为Math对象,也不需要定义一个新的Math对象,JavaScript将自动地创建好Math对象,我们只须直接使用它即可。这使得Math对象使用起来很容易。


  Math对象的属性中包含一些经常使用的数学常量,如PI属性(即圆周率近似值3.141592653589793)。通常情况下,要访问这些属性,只须在Math之后加上一个点号(.),然后写出要访问的属性名。例如,要计算一个圆的面积,可以使用如下代码:


1     var radius = prompt("Give the radius of the circle", "");
2     var area = (Math.PI)*radius*radius;
3     document.write("The area is " + area);

 


  1.abs()方法


  abs()方法返回所传入参数的绝对值。实际上,绝对值就是一个数去掉正负号之后的数值。例如,–1的绝对值是1,–4的绝对值是4等。对于正数,其绝对值就是该正数本身,例如,1的绝对值就是1。


  例如:下面的代码对–101取绝对值,并把结果输出在页面上:

1     var myNumber = -101;
2     document.write(Math.abs(myNumber));

  2.ceil()方法

  ceil()方法用于向上取整,它把一个数值向上舍入到最接近的最小整数,即对于Math.ceil(n)方法,它将返回大于或等于n的最小整数。例如,10.01向上取整后为11,–9.99向上取整后为–9(这是因为对于负数,–9大于–10)。ceil()方法只有一个参数,即需要向上取整的数值。


  ceil()方法的使用与第2章中介绍过的parseInt()方法是不同的。parseInt()方法只是简单地截断小数点之后的所有数字,把整数部分保留下来。而ceil(n)方法将向上取整,返回大于或等于n的最小整数。


  例如,下面的代码将在页面上输出两行信息,第一行为ceil()方法对101.01向上取整的结果102,第二行为parseInt()方法取整的结果101:


1     var myNumber = 101.01;
2     document.write(Math.ceil(myNumber) + "<BR>");
3     document.write(parseInt(myNumber));

3.floor()方法


  与ceil()方法类似,floor()方法也用于对一个数字进行取整,所不同的是,floor()方法用于向下取整,它把一个数值向下舍入到最接近的最大整数,即对于Math.floor(n)方法,它将返回小于或等于n的最大整数。例如,Math.floor(10.01)将返回10,而Math.floor(–9.99)将返回–10。


4.round()方法


  round()方法用于对一个数值进行四舍五入,即当一个数小数部分大于等于0.5时,则向上舍入,小于等于0.5时则向下舍入。

  例如,对于如下代码:


1     var myNumber = 44.5;
2     document.write(Math.round(myNumber) + "<BR>");
3     myNumber = 44.49;
4     document.write(Math.round(myNumber));

  对于44.5将四舍五入为45,而对于44.49则四舍五入为44。


  关于取整方法的小结

  正如上面所述,ceil()方法、 floor()方法和round()方法都可以进行取整操作。但各个方法的取整操作是不同的。对于floor(n)方法,它返回小于或等于n的最大整数; 对于ceil(n)方法,它返回大于或等于n的最小整数;而round(n)方法将对n进行四舍五入。这几个方法可能容易混淆,表4-3格则用实例进行了 说明:它显示了一列数值,以及将这些数值作为参数分别传入parseInt()函数、ceil()方法、floor()方法和round()方法时的返回 值。


 

  

  

 

posted on 2014-03-14 10:30  一直很简单  阅读(273)  评论(0编辑  收藏  举报