JavaScript异常错误的抛出 es5.0的严格模式
抛异常的处理方法
try{
...
}catch(e){
...
}
异常信息的输出
e.message 错误信息
e.name 错误名
try{
console.log(‘a’);
console.log(b);
console.log(‘c’);
}catch(e){
console.log(e.name+” ”+e.message);
}
console.log(‘d’);
异常信息对应的六种值
error.name
EvalError:eval()的使用与定义不一致
RangeError :数值越界
ReferenceError:非法或不能识别的引用数值
比如:当一个变量未经声明就会报该错
SyntaxError :发生语法解析错误
比如:使用了中文的符号,就会报该错
TypeError : 操作数类型错误
URLError :URL处理函数使用不当
地址发生错误
es5.0的严格模式
解释:不在兼容es3.0的一些不规则语法,使用全新的es5.0规范
当前浏览器运行时基于es3.0的方法,和es5.0的新增方法使用的
若es3.0的方法与es5.0方法产生冲突,使用的es3。0的方法
在es5.0严格模式,那么es3.0和es5.0产生冲突的部分就是使用es5.0,否则 会使用es3.0的
es5.0严格模式启动
必学在整个页面最顶端写
“use strict”; //表示启动es5.0模式
在es5.0下不能使用 arguments.callee
也可写在局部比如
外部文件或者局部方法里,
或者全里
function demo(){
console.log(arguments.callee)
}
function test(){
“use strict”;
console.log(arguments.callee);
}
有两种语法
全局严格模式
局部函数内严格模式(推荐)
es5.0 语法规则
一行字符串,不会对不兼容严格模式的浏览器产生影响
在es5.0下不兼容 with ,arguments.callee , func.caller
with(){ //可以改变作用域链
}
变量赋值前必须声明
局部this必须被赋值
Person.call(null/undefined)
预编译时this不在指向window了,但全局下指向window
赋值什么就是什么
拒绝重复属性和参数,但是不报错
with(){} 的学习
With的作用:它可以改变作用域链,可以括号中的参数当成作用域链的最顶端
var obj={
name:”obj”;
}
var name=’window’;
function text(){
var name=’scope’;
with(obj){ //在括号添加一个obj对象,会把obj当成作用域链的代码最顶端
console.log(name); //输出的是obj对象的name
}
}
text();
代码简化功能写法利用with来实现
var org={
dp1:{
jc:{
name:'abc',
age:123
},
deng:{
name:"xiaom",
age:234
}
},
dp2:{
kkk:"kaodoad"
}
}
with(org.dp1.jc){
console.log(name);
}
with(org.dp1.deng){
console.log(name);
}
使用该方法会更好简化代码,不会污染全局
比如像使用document方法使用
with(document){
//在方法体里可以直接调用方法
eval(“”); //可以将字符串当代码来执行
eval(“console.log(“kkkk”);”);
但是在es3.0里面不能使用