JavaScript-ECMAScript

0.概述

  ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,JavaScript 就是这样:

            ECMAScript、JavaScript、ActionScript、ScriptEase

  每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM(在以下几节中再探讨)。当然还有其他实现并扩展了 ECMAScript 的语言,例如 Windows 脚本宿主(Windows Scripting Host, WSH)、Macromedia 在 Flash 和 Director MX 中的 ActionScript,以及 Nombas ScriptEase。

1.基本语法

  1.1如何使用JavaScript

    通过<script></script>中直接编写
    通过<script src='目标文档的URL'></script>链接外部的Js文件
    作为某个元素的事件属性值或者是超链接的href属性值
   1.2代码屏蔽
    <script type='text/javascript'>
    <!--
    Js代码;
    //-->
    </script>
    如果浏览器不支持Js,可以使用<noscript></noscript>标签,显示noscript中的内容

  1.3JavaScript的执行顺序

    按照在HTML文件中出现的顺序依次执行
    大小写敏感
    JavaScript严格区分大小写
    忽略空白符和换行符
    语句分隔符使用;结束语句
         可以把多个语句写在一行
   最后一个语句的分号可以省略,但尽量不要省略
   可以使用{}括成一个语句组,形成一个块block
   通过\对代码进行折行操作
    document.write(' hello\
      world');
    1.4注释
    单行注释//
    多行注释/*注释内容*/
    1.5JavaScript的保留字

      

  1.6控制格式

     通过document.write()向文档书写内容
    通过console.log()向控制台写入内容
    JavaScript中的错误
  1.7语法错误
    通过控制台进行调试
    逻辑错误
    通过alert()进行调试

1.数据类型和变量

  1.原始数据类型(数值型,字符串型,布尔类型)

  2.复合数据类型(对象(object),数组(array),函数(function))

  3.特殊数据类型(无定义数据类型undefined,空值null)

  4.变量

  • 通过var关键字声明变量;
var name;
var birthday;
  • 可以声明变量的同时给变量赋值
var name="Davve";
  • 可以一次声明一个变量也可以一次声明多个看变量
var name="Davve",age=12;
  • 如果只声明变量未对其赋值,默认值为undefined
  • 如果变量重名产生覆盖
var age = 11;
var age = 12;//以下面为准

  注意: 

变量严格区分大小写
var Name;
    var name; //与上面不一样
变量名称不要包含特殊字符
变量名称最好遵循驼峰标记法或者下划线法
    大驼峰  var SmartPhone;
    小驼峰  var smartPhone;
变量名称最好含义明确
    var classname;
    var birthday;

  5.类型转换

隐式转换
    转换成布尔类型假
        undefined->false
        null->false
        数值型0或0.0或NaN->false
        字符串长度为0->false
        其它对象->true
    转换为数值型数据
        undefined->NaN
        null->0
        true->1|false->0
        内容为数字->数字,否则转换成NaN
        其它对象->NaN
    转换为字符串型数据
        undefined->"undefined"
        null->"NaN"
        true->"true" false->"false"
        数值型->NaN、0或者与数值对应的字符串
        其它对象->如果存在这个对象则转换为toString()方法的值,否则转换为Undefined
显示转换
    转换成数值
        Number函数强制转换成数值
            数值->转换成原来的值
            字符串->如果可以解析为数值,则转换成数值;否则转换成NaN或者0
            true->1,false->0
            undefined->NaN
            null->0
        转换成整型
            praseInt()
        转换成浮点型
            praseFloat()
        注意
            Number函数将字符串转换为数值比praseInt函数严格很多。基本上只要有一个字符无法转换成数值,整个字符串就会被转换成NaN
    转换成字符串
        通过String函数转换成字符串
            数值->数值本身
            字符串->字符串本身
            true->"true",false->"false"
            undefined->"undefined"
            null->"null"
        转换成字符串型
            toString()
    转换成布尔类型
        通过Boolean函数强制转换成布尔值
            0、-0->false
            NaN->false
            空字符串->false
            undefined->false
            null->false

2.运算符与表达式

  2.1表达式

     表达式是用于JavaScript脚本运行时进行计算的式子,可以包含常量、变量、运算符

  2.2运算符

算术运算符
    +、-、*、/、%、++、--
        ++、--分为前缀形式和后缀形式
        前缀形式先加减1在执行
        后缀形式先执行再加减1
    注意
        +号用来连接两个字符串
        只要+连接的操作数中有一个是字符串型,Js就会自动把非字符串型数据作为字符串型数据来处理
        Js代码的执行顺序是从左到右,所以在+连接的表达式中,遇到字符串型数据之前,所有出现的数值型数据(或者可以自动转换为数值型的数据)仍被作为数值来处理。
     为了避免这种情况,我们可以在表达式前拼一个空字符串
字符连接符
    通过+连接字符串
赋值运算符
    =、+=、-=、*=、/=、%=、.=
比较运算符
    >、>=、<、<=、==、!=、===、!==
    注意
        比较运算符的结果为布尔类型
        ==只比较值是否相等、===比较值和类型
逻辑运算符
    &&、||、!
    注意
        逻辑运算符的结果为布尔类型
        &&如果第一个表达式为false,造成短路
        ||如果第一个表达式为true,造成短路
三元运算符
    exp1?exp2:exp3
其它运算符
    逗号运算符
        逗号用来将多个表达式连接为一个表达式,新表达式的值为最后一个表达式的值,多用在变量声明处
    void运算符
        void运算符用来指明一个表达式无返回结果
    typeof运算符
        typeof运算符用来返回一个字符串,返回的是操作数的数据类型

  2.3运算符优先级

      

3.流程控制(与C语言一模一样,放心大胆使用)

  3.1条件语句

if(exp)执行一句代码
if(exp){执行代码段;}
if(exp){exp为true执行代码段}else{exp为false执行代码段;}
if...elseif...
switch...case
if嵌套

  3.2循环语句

for循环
while循环
do...while循环

  3.3特殊循环语句

  break终止循环
  continue跳过当次循环,进入下次循环

4.函数

  4.1函数定义(三种方式)

   通过function关键字定义:

function 函数名称([参数,...]){
    代码段;
    return 返回值;
}
函数名称不要包含特殊字符
函数名称最好含义明确
函数名称最好遵循驼峰标记法或者下划线法
函数名称严格区分大小写
函数名称如果重复会产生覆盖
函数可以有参数也可以没有参数,可以有一个参数也可以有多个参数
函数通过return加返回值,如果没有return 默认返回undefined
函数不调用不执行
注意
//方式一:
function calc(x,y){
        x=arguments[0]?arguments[0]:0;
        y=arguments[1]?arguments[1]:0;
        return x+y;
    }

//方式二
function calc(x,y){
        x=x||0;
        y=y||0;
        return x+y;
    }

//方式三
    function calc(x,y){
        if(x===undefined){
            x=0;
        }
        y=y===undefined?0:y;
        return x+y;
    }
三种实现函数默认参数方式

      匿名函数:

function(){
            alert('this is a test');
        }
        )();
        
        (
            function(a,b){
                alert(a+b);
            }
        )(3,5);
函数表达式可以存储在变量中,变量也可以作为一个函数使用
可以将匿名函数作为参数传递给其它函数,接收方函数就可以通过所传递进来的函数完成某些功能
可以通过匿名函数来执行某些一次性的任务
说明

     通过Function()构造函数

//通过内置JavaScript函数构造器(Function())定义
    var myFunction=new Function('a','b','return a+b');
    var myFunction=function(a,b){return a+b;};
注意
   以上两种方式是等价的
   尽量避免使用new关键字
function test1(){
        var paramsNum=arguments.length;
        var max=0;
        for(var i=0;i<=paramsNum-1;i++){
            if(arguments[i]>max){
                max=arguments[i];
            }
        }
        return max;
    }
    alert(test1(123,3432,23456,445643));
实例

   4.2调用函数

作为一个函数调用
    通过函数名称()进行调用,如果有参数传递相应参数即可
    在HTML中默认的全局对象是HTML页面本身,所以函数是属于HTML页面。在浏览器中的页面对象是浏览器窗口(window对象).所以函数会自动变为window对象的函数。
  也可以通过window.函数名称()进行调用 全局对象 当函数没有被自身的对象调用时,this的值就会变成全局对象。在web浏览器中全局对象是浏览器窗口window对。 函数作为全局对象调用,会使this的值称为全局对象。使用window对象作为一个变量容易造成程序崩溃 函数作为方法调用 可以将函数定义为对象的方法进行调用 使用构造函数调用函数 如果在函数调用前使用了new关键字,则调用了构造函数 作为回调函数调用函数 call() apply()

   4.3参数

  函数可以有参数也可以没有参数,如果定义了参数,在调用函数的时候没有传值,默认设置为undefined
  在调用函数时如果传递参数超过了定义时参数,js会忽略掉多余参数
  js中不能直接写默认值,可以通过arguments对象来实现默认值效果(参考上面实例)

  可以通过arguments对象实现可变参数的函数(参考上面实例)
  通过值传递参数在函数体内对变量做修改不会影响变量本身
  通过对象传递参数在函数体内对变量做更改会影响变量本身

  4.4变量的作用域

   局部变量:在函数体内声明的变量,仅在函数体内可以使用(通过var声明的都是局部变量)
  全局变量:函数体外声明的变量,在变量声明开始到脚本结束都可以是使用
  注意:
    尽量控制全局变量的数量,容易引发bug
    最好总是使用var语句来声明变量

//变量作用域
     var x=1;
     function test(){
         document.write('函数体内x的值为:'+x+'<br/>');
         x=19;
         document.write('函数体内对x重新赋值,此时x的值为:'+x+'<br/>');
      }
      document.write('函数体外x的值为:'+x+'<br/>');
      test();
      document.write('x的值为:'+x+'<br/>');
      document.write('<hr color="red"/>');
var x=1,y=2;
function calc(x,y){
    document.write('a的值为'+a+'<br/>');//undefined
    document.write('函数体内x的值为:'+x+'<br/>');
    document.write('函数体内y的值为:'+y+'<br/>');
    var x=0,y=6;
    z=x+y;
    x=x+y;
    var a=198;
    document.write('a的值为:'+a+'<br/>');
    document.write('x的值为:'+x+'<br/>');
    return z;
}

  4.5JavaScript全局函数

parseInt(string,radix):返回转换成整数的值
    当参数radix的值为0,或者没有设置这个参数,parseInt()会根据string来判断数字的基数
    当忽略radix,JavaScript默认数字的基数规则为
    如果string以0x开头,parseInt()会把string的其余部分解析为十六进制的整数
    如果string以0开头,那么ECMAScript v3允许parseInt()的一个实现把其后的字符解析为八进制或十六进制的数字
    如果string以1~9的数字开头,parseInt()将把它解析为十进制的整数
    字符串如果以合法字符开始,截取合法字符
    开头和结尾的空格是允许的
    如果字符串的第一个字符不能被转换为数字,parseInt()会返回NaN
    在字符串以"0"为开始时旧的浏览器默认使用八进制基数。ECMAScript 5,默认的是十进制的基数。
parseFloat(string):返回转换成浮点型的值
    该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。
isFinite(value):检测某个是是否是无穷值
    如果number是NaN或者+Infinity或者-Infinity的数,isFinite()返回false
isNaN(value):检测某个值是否是NaN
isNaN()检测是否是非数字值,如果值为NaN返回true,否则返回false
encodeURI(uri):将字符串编码为URI
    注意
        使用 decodeURI() 方法可以编码URI(通用资源标识符:UniformResourceIdentifier,简称"URI")。
        对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的: , / ? : @ & = + $ # (可以使用 encodeURIComponent() 方法分别对特殊含义的 ASCII 标点符号进行编码。).
decodeURI(uri):解码某个个编码的URI
encodeURIComponent(uri):将字符串编码为URI组件
    注意
        该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 
        其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的
decodeURIComponent():解码一个编码的URI组件
escape():对字符串进行编码
    注意
        escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
        该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
escape()函数不能用于编码 URIs(通用资源标识符(UniformResourceIdentifier,简称"URI"))
unescape():解码由escape()编码的字符串
eval():将JavaScript字符串当作脚本来执行
    注意
        如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
        eval()函数是一种由函数执行的动态代码,比直接执行脚本慢很多
        慎重使用eval()函数,尽量不用,保证程序的安全性
Number(object):把对象的值转换为数字
    注意
        如果对象的值无法转换为数字,Number()函数返回NaN
        如果参数的Date对象,Number()返回从1970年1月1日到现在所经历的毫秒数
String():把对象的值转换为字符串
    String() 函数返回与字符串对象的toString()方法值一样
View Code
//全局函数的例子
        document.write('默认情况的结果<br/>');
        document.write(parseInt('32')+'<br/>');
        document.write(parseInt('032')+'<br/>');
        document.write(parseInt('0x32')+'<br/>');
        document.write(parseInt('true')+'<br/>');
        document.write(parseInt('3king')+'<br/>');
        document.write(parseInt(' 5abc ')+'<br/>');
        document.write(parseInt(' 88 99 00')+'<br/>');
        document.write('<hr color="red"/>');
        document.write('转换成二进制的结果<br/>');
        document.write(parseInt('32',2)+'<br/>');
        document.write(parseInt('032',2)+'<br/>');
        document.write(parseInt('0x32',2)+'<br/>');
        document.write('<hr/>');
        document.write('转换成八进制的结果<br/>');
        document.write(parseInt('32',8)+'<br/>');
        document.write(parseInt('032',8)+'<br/>');
        document.write(parseInt('0x32',8)+'<br/>');
        document.write('<hr/>');
        document.write('转换成八进制的结果<br/>');
        document.write(parseInt('32',16)+'<br/>');
        document.write(parseInt('032',16)+'<br/>');
        document.write(parseInt('0x32',16)+'<br/>');
        //二进制转换成其他进制
        document.write('<hr/>');
        document.write('二进制转换成其他进制的结果<br/>');
        document.write(parseInt('11001010',2)+'<br/>');
        document.write(parseInt('11001010',8)+'<br/>');
        document.write(parseInt('11001010',10)+'<br/>');
        document.write(parseInt('11001010',16)+'<br/>');
        document.write(parseInt('202',2)+'<br/>');
        
        //转换成浮点型
        document.write('<hr/>');
        document.write(parseFloat('2.6')+'<br/>');
        document.write(parseFloat('323')+'<br/>');
        document.write(parseFloat('2e2')+'<br/>');
        document.write(parseFloat('123abc')+'<br/>');
        document.write(parseFloat(' 2.6 ')+'<br/>');
        document.write(parseFloat('a2.6')+'<br/>');
        
        //通过isFinite()检测是否是无穷值
        var x=123;
        x=Infinity;
        x=-Infinity;
        x=0/0;
        x=0;
        x=false;
//        alert(isFinite(x));
        x=NaN;
        x=123;
        x=false;
        x=parseInt('king3');
        alert(isNaN(x));


//测试编码URI的函数
            var url="http://www.phpfamily.org/test.php?search= this is a test&sum=1+2";
            var res=encodeURI(url);
            document.write(res);
            var res1=decodeURI(res);
            document.write('<br/>'+res1+'<br/>');
            url="http://www.phpfamily.org/test.php?search= this is a test&sum=1+2&test1=!.()*~";
            res=encodeURIComponent(url);
            document.write(res+'<br/>');
            res1=decodeURIComponent(res);
            document.write('<br/>'+res1+'<br/>');
            document.write('<hr color="red"/>');
            var str1='你好hello maizi http://maiziedu.com?search=javascript&test=this is a test&test1=-_*?';
            var result=escape(str1);
            document.write(result);
            document.write('<br/>');
            var result1=unescape(result);
            document.write(result1);
            document.write('<hr/>');
            eval('var i=12;');
//            alert(i);
            document.write('<hr color="red"/>');
            var var1=new Boolean(123);
//            alert(var1);
            var1=false;
            var1='3king';
            var1=34;
            var1=345.67;
            var1='3';
            var1=undefined;
            var1=null;
            var1=NaN;
            var1=new Date();
//            alert(Number(var1));
            var var2=true;
            var2=false;
            var2=23;
            var2=12.3;
            var2=null;
            var2=undefined;
            var2=NaN;
            var2='king';
            alert(String(var2));
例子

  4.6回调函数

function addOne(a){
    return a+1;
}
function test(a,b,c,callback){
    var i,arr=[];
    for(i=0;i<3;i++){
        arr[i]=callback(arguments[i]*2);
    }
    return arr;
}

 

5.对象

 5.1字符串对象 

  字符串创建(两种方式)
       
① 变量 = “字符串”
       ② 字串对象名称 = new String (字符串)  

var str1="hello world";
var str1= new String("hello word");

  方法和属性

x.length         ----获取字符串的长度

 x.toLowerCase()        ----转为小写
 x.toUpperCase()        ----转为大写
 x.trim()               ----去除字符串两边空格       


----字符串查询方法

x.charAt(index)         ----str1.charAt(index);----获取指定位置字符,其中index为要获取的字符索引
x.indexOf(findstr,index)----查询字符串位置
x.lastIndexOf(findstr)  
x.match(regexp)         ----match返回匹配字符串的数组,如果没有匹配则返回null
x.search(regexp)        ----search返回匹配字符串的首字符位置索引
                        示例:
                        var str1="welcome to the world of JS!";
                        var str2=str1.match("world");
                        var str3=str1.search("world");
                        alert(str2[0]);  // 结果为"world"
                        alert(str3);     // 结果为15
                        
----子字符串处理方法
x.substr(start, length) ----start表示开始位置,length表示截取长度
x.substring(start, end) ----end是结束位置
x.slice(start, end)     ----切片操作字符串
                        示例:
                            var str1="abcdefgh";
                            var str2=str1.slice(2,4);
                            var str3=str1.slice(4);
                            var str4=str1.slice(2,-1);
                            var str5=str1.slice(-3,-1);
                            alert(str2); //结果为"cd"
                            alert(str3); //结果为"efgh"
                            alert(str4); //结果为"cdefg"
                            alert(str5); //结果为"fg"

x.replace(findstr,tostr) ----    字符串替换
x.split();                 ----分割字符串
                                 var str1="一,二,三,四,五,六,日"; 
                                var strArray=str1.split(",");
                                alert(strArray[1]);//结果为"二"
                                
x.concat(addstr)         ----    拼接字符串

 5.2数组对象

  创建数组的三种方式

创建方式1:
var arrname = [元素0,元素1,….];          // var arr=[1,2,3];

创建方式2:
var arrname = new Array(元素0,元素1,….); // var test=new Array(100,"a",true);

创建方式3:
var arrname = new Array(长度); 
            //  初始化数组对象:
                var cnweek=new Array(7);
                    cnweek[0]="星期日";
                    cnweek[1]="星期一";
                    ...
                    cnweek[6]="星期六";

  方法和属性

x.join(bystr)       ----将数组元素拼接成字符串

                            var arr1=[1, 2, 3, 4, 5, 6, 7];
                var str1=arr1.join("-");
                alert(str1);  //结果为"1-2-3-4-5-6-7" 
x.concat(value,...)    ---- 
                   var a = [1,2,3];
                  var b=a.concat(4,5) ;
                  alert(a.toString());  //返回结果为1,2,3            
                  alert(b.toString());  //返回结果为1,2,3,4,5
//x.reverse()
//x.sort()

var arr1=[32, 12, 111, 444];
//var arr1=["a","d","f","c"];

arr1.reverse(); //颠倒数组元素
alert(arr1.toString());
//结果为444,111,12,32

arr1.sort();    //排序数组元素
alert(arr1.toString());
//结果为111,12,32,444

//------------------------------
arr=[1,5,2,100];

//arr.sort();
//alert(arr);
//如果就想按着数字比较呢?

function intSort(a,b){
    if (a>b){
        return 1;//-1
    }
    else if(a<b){
        return -1;//1
    }
    else {
        return 0
    }
}

arr.sort(intSort);

alert(arr);

function IntSort(a,b){
    return a-b;
}

//x.slice(start, end)
//
//使用注解
//
//x代表数组对象
//start表示开始位置索引
//end是结束位置下一数组元素索引编号
//第一个数组元素索引为0
//start、end可为负数,-1代表最后一个数组元素
//end省略则相当于从start位置截取以后所有数组元素

var arr1=['a','b','c','d','e','f','g','h'];
var arr2=arr1.slice(2,4);
var arr3=arr1.slice(4);
var arr4=arr1.slice(2,-1);

alert(arr2.toString());
//结果为"c,d" 
alert(arr3.toString());
//结果为"e,f,g,h"
alert(arr4.toString());
//结果为"c,d,e,f,g"

//x. splice(start, deleteCount, value, ...)

//使用注解

//x代表数组对象
//splice的主要用途是对数组指定位置进行删除和插入
//start表示开始位置索引
//deleteCount删除数组元素的个数
//value表示在删除位置插入的数组元素
//value参数可以省略       
        
var a = [1,2,3,4,5,6,7,8];
a.splice(1,2);

alert(a.toString());//a变为 [1,4,5,6,7,8]

a.splice(1,1);

alert(a.toString());//a变为[1,5,6,7,8]

a.splice(1,0,2,3);

alert(a.toString());//a变为[1,2,3,5,6,7,8]

//push pop这两个方法模拟的是一个栈操作

//x.push(value, ...)  压栈
//x.pop()             弹栈      
//使用注解
//
//x代表数组对象
//value可以为字符串、数字、数组等任何值
//push是将value值添加到数组x的结尾
//pop是将数组x的最后一个元素删除


var arr1=[1,2,3];
arr1.push(4,5);
alert(arr1);
//结果为"1,2,3,4,5"
arr1.push([6,7]);
alert(arr1)
//结果为"1,2,3,4,5,6,7"
arr1.pop();
alert(arr1);
//结果为"1,2,3,4,5"

//x.unshift(value,...)
//x.shift()
//使用注解

//x代表数组对象
//value可以为字符串、数字、数组等任何值
//unshift是将value值插入到数组x的开始
//shift是将数组x的第一个元素删除

var arr1=[1,2,3];
arr1.unshift(4,5);
alert(arr1);  //结果为"4,5,1,2,3"

arr1. unshift([6,7]);
alert(arr1);  //结果为"6,7,4,5,1,2,3"

arr1.shift();
alert(arr1);  //结果为"4,5,1,2,3"
View Code

 5.3Date对象

  对象的创建

//方法1:不指定参数
var nowd1=new Date();
alert(nowd1.toLocaleString( ));
//方法2:参数为日期字符串
var nowd2=new Date("2004/3/20 11:12");
alert(nowd2.toLocaleString( ));
var nowd3=new Date("04/03/20 11:12");
alert(nowd3.toLocaleString( ));
//方法3:参数为毫秒数
var nowd3=new Date(5000);
alert(nowd3.toLocaleString( ));
alert(nowd3.toUTCString());

//方法4:参数为年月日小时分钟秒毫秒
var nowd4=new Date(2004,2,20,11,12,0,300);
alert(nowd4.toLocaleString( ));//毫秒并不直接显示

  方法和属性

获取日期和时间
getDate()                 获取日
getDay ()                 获取星期
getMonth ()               获取月(0-11)
getFullYear ()            获取完整年份
getYear ()                获取年
getHours ()               获取小时
getMinutes ()             获取分钟
getSeconds ()             获取秒
getMilliseconds ()        获取毫秒
getTime ()                返回累计毫秒数(从1970/1/1午夜)

  基本操作

function getCurrentDate(){
        //1. 创建Date对象
        var date = new Date(); //没有填入任何参数那么就是当前时间
        //2. 获得当前年份
        var year = date.getFullYear();
        //3. 获得当前月份 js中月份是从0到11.
        var month = date.getMonth()+1;
        //4. 获得当前日
        var day = date.getDate();
        //5. 获得当前小时
        var hour = date.getHours();
        //6. 获得当前分钟
        var min = date.getMinutes();
        //7. 获得当前秒
        var sec = date.getSeconds();
        //8. 获得当前星期
        var week = date.getDay(); //没有getWeek
        // 2014年06月18日 15:40:30 星期三
        return year+"年"+changeNum(month)+"月"+day+"日 "+hour+":"+min+":"+sec+" "+parseWeek(week);
    }

alert(getCurrentDate());

//解决 自动补齐成两位数字的方法
    function changeNum(num){
    if(num < 10){
        return "0"+num;
    }else{
        return num;
    }

}
//将数字 0~6 转换成 星期日到星期六
    function parseWeek(week){
    var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    //             0      1      2      3 .............
    return arr[week];
}


//设置日期和时间
//setDate(day_of_month)       设置日
//setMonth (month)                 设置月
//setFullYear (year)               设置年
//setHours (hour)         设置小时
//setMinutes (minute)     设置分钟
//setSeconds (second)     设置秒
//setMillliseconds (ms)       设置毫秒(0-999)
//setTime (allms)     设置累计毫秒(从1970/1/1午夜)
    
var x=new Date();
x.setFullYear (1997);    //设置年1997
x.setMonth(7);        //设置月7
x.setDate(1);        //设置日1
x.setHours(5);        //设置小时5
x.setMinutes(12);    //设置分钟12
x.setSeconds(54);    //设置秒54
x.setMilliseconds(230);        //设置毫秒230
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日5点12分54秒

x.setTime(870409430000); //设置累计毫秒数
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日12点23分50秒

日期和时间的转换:

getTimezoneOffset():8个时区×15度×4分/度=480;
返回本地时间与GMT的时间差,以分钟为单位
toUTCString()
返回国际标准时间字符串
toLocalString()
返回本地格式时间字符串
Date.parse(x)
返回累计毫秒数(从1970/1/1午夜到本地时间)
Date.UTC(x)
返回累计毫秒数(从1970/1/1午夜到国际时间)
View Code

 5.4Match对象

//该对象中的属性方法 和数学有关.
   

abs(x)    返回数的绝对值。
exp(x)    返回 e 的指数。
floor(x)对数进行下舍入。
log(x)    返回数的自然对数(底为e)。
max(x,y)    返回 x 和 y 中的最高值。
min(x,y)    返回 x 和 y 中的最低值。
pow(x,y)    返回 x 的 y 次幂。
random()    返回 0 ~ 1 之间的随机数。
round(x)    把数四舍五入为最接近的整数。
sin(x)    返回数的正弦。
sqrt(x)    返回数的平方根。
tan(x)    返回角的正切。

//方法练习:
        //alert(Math.random()); // 获得随机数 0~1 不包括1.
        //alert(Math.round(1.5)); // 四舍五入
        //练习:获取1-100的随机整数,包括1和100
             //var num=Math.random();
             //num=num*10;
             //num=Math.round(num);
             //alert(num)
        //============max  min=========================
        /* alert(Math.max(1,2));// 2
        alert(Math.min(1,2));// 1 */
        //-------------pow--------------------------------
        alert(Math.pow(2,4));// pow 计算参数1 的参数2 次方.

 

  

posted @ 2017-08-07 19:13  看雪。  阅读(218)  评论(0编辑  收藏  举报