js7

本文介绍了JavaScript中的错误处理机制,包括六种错误类型及try-catch-finally语句的应用。此外,还深入探讨了Function对象特性,如arguments对象的使用、函数创建方式、匿名函数与闭包的概念。

*错误/异常处理
什么是错误:导致程序无法继续执行的异常状态
js中一旦发生错误,就会自动创建一个Error类型对象
js中有几种错误类型(6种)
SyntaxError: 语法错误
ReferenceError: 引用错误,找不到变量或对象
TypeError: 类型错误,错误的使用了对象中的方法时
RangeError: 范围错误,参数超范围
EvalError: 调用eval函数时出错
URLError: URL错误

错误处理:在程序发生错误时,保证程序不退出或正常退出
如何错误处理:
语法:tryCatch块:3部分
try{
正常代码段中,可能出错的代码段
}catch(err){//仅在发生错误时才执行
//一旦发生错误err中就会自动存入Error对象
1. 记录/显示错误的信息
2. 继续向调用者抛出异常
}[finally{
无论对错,一定都会执行的代码段
释放资源
}]
何时需要定义错误处理?某段只要有可能出错,都要包在tryCatch块中。
建议:尽量优先使用if...else结构判断已经预知的错误
只有无法预知的错误,才用try catch。

tryCatch用法之一:解决浏览器兼容性问题

抛出自定义异常:throw new Error("自定义错误消息")
比如:如果程序员甲定义了一个方法,被程序员乙调用
如果程序员乙错误的使用甲的方法,
甲的方法中就要抛出自定义错误消息
乙在调用时,就要将甲的方法包在try块中

***Function对象:js中一切都是对象
连函数也是对象
函数名其实是引用函数定义对象的变量

1. *arguments对象:
重载:程序中可定义多个相同函数名,不同参数列表的函数
调用者不必区分每个函数的参数
执行时,程序根据传入的参数个数,自动判断选择哪个函数执行。

tmooc/java/java面向对象/类中的方法

js语法不支持重载!但可用arguments对象模拟重载效果
arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象。
arguments[i]: 获得传入的下标为i的参数值
arguments.length: 获得传入的参数个数!

即使定义了参数变量,arguments对象同样会收到所有参数值

2. ****函数对象本质:
1. 创建函数对象:3种:
1. 声明方式:function 函数名(参数){
函数体;
return 返回值
}
函数名和函数定义都被提前
在调用前后位置定义都行
2. 函数直接量:var 函数名=function(参数){
函数体;
return 返回值
}
仅函数名变量声明会提前,
函数定义留在本地
必须定义在调用前!
3. 使用new创建函数类型对象:
var 函数名=new Function("a","b",...,"函数体");

2.***内存中的函数对象***
创建函数对象时:同时创建2个对象:
函数对象:函数的定义
作用域链对象:保存了函数对象可用变量的位置的对象(栈)
默认第一项指向window对象
调用函数时:又会创建1个新对象:
活动对象:专门保存局部变量的对象
在作用域链对象中追加指向活动对象的引用
调用后:作用域链中活动对象的引用出栈
活动对象因无人引用而释放

3.***匿名函数:定义时,不指定函数名的函数
何时使用:2大用途:
1. 匿名函数自调:定义完,立刻执行
执行完立刻释放
何时使用:只有确定函数只执行一次时!
如何自调:(function(参数){
函数体
})(参数值);
自调:定义在哪儿,就在哪儿执行,不提前
2. 匿名函数回调:向将函数作为对象传递给另一个函数
由另一个函数自主决定在需要时调用
何时使用:只要将一个函数对象传递给其他方法调用时
如何回调:直接将匿名函数的声明传入另一个函数中。

4.***闭包:
问题:全局变量和局部变量的缺陷
全局变量:容易全局污染
局部变量:无法共享,不能长久保存

既可以共享,长久保存,又不会全局污染——闭包
解决:3步:闭包三特点:
1. 定义外层函数,封装被保护的局部变量
2. 定义内层函数,执行对外层函数局部变量的操作
3. 外层函数返回内层函数的对象
并且外层函数被调用,结果被保存在全局变量中

何时使用:即反复使用局部变量,又避免全局污染
就要用闭包

 

转载于:https://www.cnblogs.com/handsomeboyyyyyy/p/6759850.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值