javascript第九天

错误处理:

什么是错误:导致程序运行停止的运行时异常状态

什么是错误处理:在出现异常状态时,保证程序不停止的机制

错误如何处理:

错误类型: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)中的局部变量,而此变量在外部是通过其他途径无法访问的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值