javascript第九天
2016-05-17 20:51
495 查看
错误处理:
什么是错误:导致程序运行停止的运行时异常状态
什么是错误处理:在出现异常状态时,保证程序不停止的机制
错误如何处理:
错误类型:Error类型:所有错误对象的父类型
6个子类型:evalError,rangeError:参数超出范围,ReferenceError:引用错误,找不到对象(只要使用未声明的变量时,都抛出ReferenceError),
SyntaxError:语法错误!修改源代码就可以解决!,TypeError:错误的使用了类型和类型的方法,URIError:URI错误
如何处理错误:
能用if...else解决的问题,就不用try catch!
何时使用 try catch? try catch处理的是无法预料 的问题
主动抛出异常:如何告知方法调用者出错?throw new error(自定义错误");
Function对象:
1.以声明方式定义方法!:放前放后无所谓
function 方法名(参数列表){方法体;return 返回值}
以创建对象方式定义方法:必须定义在使用之前!
2. var 方法名
new Function('参数1',...,方法体;return 返回值)
3.使用匿名函数赋值的方式定义方法:
匿名函数:没有方法名的函数定义!
var compare = function(a,b){return a-b;}
只有声明方式的方法定义才被提前解析! ------方法声明提前
arguments对象:方法对象中保存所有参数的类数组对象
类数组对象:长的像数组的对象
arguments.length:保存变量的个数 arguments[i]:访问传入的第i个变量
isEmpty方法
1.回调函数:函数何时执行,程序员不需要控制!由所在环境自动调用执行!
2.自调函数:匿名函数自己调用自己!当函数不需要重复使用时,使用匿名函数自调
闭包
![](http://img.blog.csdn.net/20160517163541143?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
作用域链:
任何一段JavaScript代码都对应一个作用域链
-------作用域链中可以存放一系列对象,代码中声明的变量将作为对象的属性存放。
当需要使用一个变量时,将从作用域链中逐个查找对象的属性
-------比如:要使用变量a,将先查找作用域链中的第一个对象是否有属性a,如果有就使用,如果没有就查找作用域链中下一个对象的属性,以此类推
作为JavaScript的顶层代码,其作用域链中只有一个对象即全局对象,对于浏览器客户端而言就是window
每当一个函数被调用时,会创建一个上下文对象,在该函数中声明的局部变量将作为该上下文对象的属性存放
对应于函数中的代码段,其作用域链中将存放两个对象
-------第一个是调用该函数时
闭包:函数外使用了不属于自己的局部变量
闭包应用特征
1、局部变量:在函数中定义有共享意义的局部变量
2、内嵌函数:在函数(f)中声明有内嵌函数,内嵌函数(g)对函数(f)中的局部变量进行访问
3、外部使用:函数(f)向外返回此内嵌函数(g),外部可以通过此内嵌函数持有并访问声明在函数(f)中的局部变量,而此变量在外部是通过其他途径无法访问的
什么是错误:导致程序运行停止的运行时异常状态
什么是错误处理:在出现异常状态时,保证程序不停止的机制
错误如何处理:
错误类型:Error类型:所有错误对象的父类型
6个子类型:evalError,rangeError:参数超出范围,ReferenceError:引用错误,找不到对象(只要使用未声明的变量时,都抛出ReferenceError),
SyntaxError:语法错误!修改源代码就可以解决!,TypeError:错误的使用了类型和类型的方法,URIError:URI错误
如何处理错误:
try{ 可能出现的错误 }catch(err){只要抛出错误,都会创建一个Error对象 错误处理的代码 1.获得错误信息:err.name类型 2.根据错误的类型,执行不同的处理 }finally{可有可无,程序中使用了大对象!一定要在finally中主动释放 无论是否出错,都必须执行的代码 }
var str = "no zuo no die"; var kw = prompt("search"); var arr = str.match(reg); try{ document.write("共找到" + arr.length + "个"); }catch(err){ if(err.name == "TypeError"){ document.write("没找到!"); } }finally{ arr = null; reg = null; kw = null; str = null; console.log("释放对象"); }
能用if...else解决的问题,就不用try catch!
何时使用 try catch? try catch处理的是无法预料 的问题
主动抛出异常:如何告知方法调用者出错?throw new error(自定义错误");
Function对象:
1.以声明方式定义方法!:放前放后无所谓
function 方法名(参数列表){方法体;return 返回值}
以创建对象方式定义方法:必须定义在使用之前!
2. var 方法名
new Function('参数1',...,方法体;return 返回值)
3.使用匿名函数赋值的方式定义方法:
匿名函数:没有方法名的函数定义!
var compare = function(a,b){return a-b;}
只有声明方式的方法定义才被提前解析! ------方法声明提前
arguments对象:方法对象中保存所有参数的类数组对象
类数组对象:长的像数组的对象
arguments.length:保存变量的个数 arguments[i]:访问传入的第i个变量
isEmpty方法
function isEmpty(str){ if(str === undefined){ return true; }else if(str === null){ return true; }else{ var reg = /^\s*$/ return reg.test(str); } }
function ltrim(){//去掉左空格 var reg = /^\s+/; return str.replace(reg,""); } function rtrim(){// 去掉右空格 var reg = /\s+$/; return str.replace(reg,""); }匿名函数的2个用途:
1.回调函数:函数何时执行,程序员不需要控制!由所在环境自动调用执行!
2.自调函数:匿名函数自己调用自己!当函数不需要重复使用时,使用匿名函数自调
(function(){ console.log("匿名自调"); })();
闭包
作用域链:
任何一段JavaScript代码都对应一个作用域链
-------作用域链中可以存放一系列对象,代码中声明的变量将作为对象的属性存放。
当需要使用一个变量时,将从作用域链中逐个查找对象的属性
-------比如:要使用变量a,将先查找作用域链中的第一个对象是否有属性a,如果有就使用,如果没有就查找作用域链中下一个对象的属性,以此类推
作为JavaScript的顶层代码,其作用域链中只有一个对象即全局对象,对于浏览器客户端而言就是window
每当一个函数被调用时,会创建一个上下文对象,在该函数中声明的局部变量将作为该上下文对象的属性存放
对应于函数中的代码段,其作用域链中将存放两个对象
-------第一个是调用该函数时
闭包:函数外使用了不属于自己的局部变量
闭包应用特征
1、局部变量:在函数中定义有共享意义的局部变量
2、内嵌函数:在函数(f)中声明有内嵌函数,内嵌函数(g)对函数(f)中的局部变量进行访问
3、外部使用:函数(f)向外返回此内嵌函数(g),外部可以通过此内嵌函数持有并访问声明在函数(f)中的局部变量,而此变量在外部是通过其他途径无法访问的
相关文章推荐
- jsp:useBean标准动作
- bzoj1149/2895 [JSOI2009]球队收益
- js设置radio选中 【转】
- JavaScript面向对象
- javascript需要知道的1
- 解析js中的call
- javascript的几种继承方式
- 表单验证插件Validate.js的使用
- Javascript 面向对象编程(一):封装
- jsp一句话
- Javascript面向对象编程(二):构造函数的继承
- js中的this关键字详解
- jsp 前后台值传递
- jsp编码过程
- 算是学完了《Servlet&JSP学习笔记》,立此存照
- jsoncpp解析拼装数组
- js学习六-闭包
- js里==和===的区别
- 《JavaScript程序设计》课堂交流区问题汇总(基础篇)
- javascript笔试题(2)