JavaScript-10

正课: 
1. ***日期API
2. ***Error


1. ***日期API
   单位:  FullYear   Month     Date          Day
             Hours      Minutes   Seconds    Milliseconds
   API: 1. 每个单位都有一个对儿get/set方法
            比如: var year=date.getFullYear()//获取单位的值     
                     date.setFullYear(year)//设置单位的值
            特殊: Day没有set方法
          2. 命名: 年月日星期没有s结尾
                      时分秒毫秒都有s结尾
          3. 取值范围: 只有Date从1~31
                   不考虑FullYear, 其余都是从0开始,到进制-1结束
               Month: 0~11 总比现实中小1, 需要修正
               Date: 1~31   不用修正
               Day: 0~6      不用修正
               Hours: 0~23 不用修正
               Minutes/Seconds: 0~59 不用修正 
   日期计算: 
      1. 计算两个日期的时间差: 两日期相减,得毫秒数,再换算
      2. 对任意单位做加减: 3步: 
           1. 取分量: var d=date.getDate();
           2. 做加减: d+=60
           3. 放回去: date.setDate(d);
                强调: 所有set方法可自动调整时间进制
          其实可简写为: date.setDate(date.getDate()+60)
   转字符串: 
       date.toString() -> 当地时间的完整时间格式
       date.toLocaleString() ->当地时间的简化版格式
       date.toLocaleDateString() -> 当地时间的日期部分
       date.toLocaleTimeString() -> 当地时间的时间部分
       date.toGMTString() -> 标准时区的标准时间



2. ***Error
   什么是错误(bug): 程序执行过程中遇到的异常中断。
          一旦发生错误,程序立刻退出。
   什么是错误处理: 即使程序发生错误,也能保证程序不异常中断的一种机制。
   如何: 
       try{
           可能发生错误的代码
       }catch(err){//仅在发生错误时,才执行
           错误处理代码: 1. 提示用户错误信息(String(err))
                                  2. 记录系统日志
       }finally{
           无论是否发生错误,都必须执行的代码。
           比如: 释放资源!
       }
  err: Error对象: 在错误发生时,自动创建的,保存错误信息的对象。
    错误类型6种: 
        SyntaxError   语法错误
        ReferenceError   要使用的变量没找到
        TypeError   错误的调用了对象的方法
        RangeError  参数范围越界 比如: toFixed(d) 0~20

        EvalError   URIError











正课: 
1. ***错误处理
2. ***Function
   *****闭包


1. ***错误处理
    只要可以提前预料的错误,都要用if...else...来代替try catch
    只有无法提前预料的错误,采用try catch


    主动抛出错误: 
    为什么: 抛出错误通常是为了提醒使用者错误的使用的程序
    如何: throw new Error("错误消息")


2. ***Function:
    什么是: js中一切函数都是对象
                函数对象是专门封装函数定义的对象。
    创建: 3种: 
      1. 声明: function 函数名(参数列表){函数体; return 返回值;}
          何时: 只要一段代码被反复使用,都要先定义在一个专门的函数中,再反复调用函数即可——复用
             何时使用参数: 只要函数步骤中必须某些数据才能正常执行时,就要定义参数。
             何时使用返回值: 如果函数的调用者需要函数的执行结果时,函数就必须返回值。
         可被声明提前: 
      2. 函数直接量: 
       var  函数名=function(参数列表){函数体; return 返回值;};
         不会被声明提前。
****声明提前(hoist): 在开始执行程序前,将所有var声明的变量和function声明的函数提前到*当前作用域*的顶部,集中创建。
          赋值留在原地!
       何时: 只要不希望被声明提前时。
        揭示了: 函数名仅是一个普通的变量
                    函数定义其实是一个对象
                    函数名中仅保存了函数对象的地址——引用


      3. 用new: 
var fun=
     new Function("参数1","参数2",...,"函数体; return 返回值")


     比如: function compare(a,b){return a-b;}
              var compare=function(a,b){return a-b;}
              var compare=new Function("a","b","return a-b;");


***重载(overload): 
  什么是: 相同函数名,不同参数列表的多个函数,在调用时,可根据传入参数的不同,自动选择对应的函数调用!
   为什么: 减轻调用者的负担,一个函数名,可执行多种操作
   何时: 一项任务,根据不同的参数,执行不同的操作流程时
   如何:   js语法不支持重载效果
      变通:  所有函数对象内,都自动内建了一个arguments对象
         arguments对象: 
            专门保存传入函数的所有参数值的类数组对象
             类数组对象: (object like array)
                vs 数组: 相同: 下标, length, for遍历
                             不同: 类数组对象是Object,不是Array,无法使用Array的API
                                     数组是Array类型,可以使用数组类型所有的API


    匿名函数: 
    什么是: 函数创建时,不被任何变量引用的函数
    为什么: 节约内存
    何时: 如果一个函数只用一次,用完希望自动释放时
        1. 回调callback: 将函数作为参数传递给另一个函数去调用  
            比如: arr.sort(function (a,b){return a-b});
                     str.replace(/reg/g,function(kw,$1,...){return ...})
        2. 自调: 创建函数后立刻调用自己!
            何时: 如果一个函数只执行一次,不会再重用时
            为什么: 建立临时作用域!避免全局污染!
            如何: 
               (function(参数列表){函数体; return 返回值})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值