try{
console.log('a');
console.log(b);
console.log('c');
}catch(e){
//这个部分赋值捕捉到错误信息
console.log(e.name+" : "+e.message);
}
console.log('d');
try里面会自动忽略错误执行。结果为a c d。
Error.name的六种值对应的信息:
1.EvalError:eval的使用与定义不一致
2.RangeError:数值越界
3。ReferenceError:非法或不能识别的引用数值(未经声明调用等)
4.SyntaxError:发生语法解析错误(中文字符等)
5.TypeError:操作数类型错误
6.URIError:URI处理函数使用不当(地址发生错误等)
ES5严格模式
es3.0和es5.0产生冲突的部分用es3.0否则就用es3.0
"use strict";(写在最顶端)
采用字符串,不会对不兼容严格模式的浏览器产生影响
两种用法:
1.全局严格模式
2.局部函数内严格模式(推荐 也是在逻辑第一行写)
不支持
with
改变作用域链,将括号中的对象作为执行期最顶端。下列执行结果为obj。
"use strict";
var obj={
name:"obj"
}
var name = 'window';
function test(){
var name = 'scope';
with(obj){
console.log(name);
}
}
arguments.callee与func.caller不被允许
变量赋值前必须声明
局部this必须被赋值即this不指向widow:
(Person.call(null/undefined)赋值什么就是什么)
拒绝重复属性和参数。