一、try..catch
try{
console.log('a');
console.log(b);//出错,不抛出错误,try里后续代码不执行
console.log('c');//不执行
}catch(e){
console.log(e.name + ":" + e.message);//try里不出错,catch里不执行。try里出错,catch会捕捉到系统传回的错误对象e(e.name e.message)
}
console.log('d');
六种错误类型:
EvalError:eval()的使用与定义不一致。eval()不允许使用
RangeError:数值越界
ReferenceError:引用错误(比如变量没声明就使用)
SyntaxError:语法解析错误
TypeError:操作数类型错误
URIError:URI处理函数使用不当
二、es5严格模式(针对es3.0和es5.0产生冲突的部分)
"use strict"; 写在全局或局部逻辑的最顶端
为啥启动es5.0严格模式要写成字符串的样子,至少在老版本浏览器不会报错
es5严格模式下:
不允许使用arguments.callee和function.caller
不允许用with
变量赋值前必须声明!!!暗示全局变量消停了。
局部this必须被赋值,赋什么就是什么!!!
拒绝重复属性和参数(重复参数报错,重复属性暂时不报错)
eval()不能用
with:可以改变作用域链。让里面的代码作用域链的最顶端变成with括号里的。改变作用域让运行非常慢。
var obj = {name : 'obj'};
var name = 'window';
function test(){
var name = 'scope';
with(obj){
console.log(name);
}
}
test();//obj
with(org.department1.xxx){},结合前面命名空间使用,简化代码
with(document){write('a');}
eval('console.log('a')'); 能把字符串当代码执行,还能改变作用域,不让用
以上内容属二哥原创,整理自 "渡一教育Javascript课程" ,一个值得推荐的"渡一教育"。