您的位置:首页 > Web前端 > JavaScript

javascript第九天

2016-05-17 20:51 495 查看
错误处理:

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

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

错误如何处理:

错误类型: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)中的局部变量,而此变量在外部是通过其他途径无法访问的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: