在try中发生错误,不会执行错误后的try里面的代码,但是会执行catch中的代码
try { console.log('a'); console.log(b); //错误语句,在try中不报错,继续执行后续代码 console.log('c'); //在错误信息后,不执行 } catch(e) { //error.name error.message console.log('f'); //catch捕捉到错误, } console.log('e'); //输出 // a f e将catch中改为
try { console.log('a'); console.log(b); console.log(c); // 有两处错误,但是第二处错误不会被捕捉到 // 因为上一句错误,这句已经不会被执行 } catch(e) { console.log(e.name+ ':' + e.message); } console.log('e'); //输出 ReferenceError:b is not definedtry…catch就是为了容错,在系统不报错的情况下,让你知道错误信息,且能继续执行后面的代码
通常使用:基于es3.0的+es5.0的新增方法 严格模式:es5.0和es3.0冲突的部分使用es5.0,否则使用es3.0
全局严格模式 "use strict" //必须放到顶部 局部函数内严格模式(推荐) function() { "use strict" //必须放在局部函数顶部 }"use strict"即使一行字符串,不会对不兼容严格模式的浏览器产生影响
不支持with(改变作用域链) var obj = { name:"obj"; } var name = "window"; function test() { var name = 'scope'; with(obj) { //改变with内代码的作用域 console.log(name); } } //输出 obj 不支持arguments.callee func caller变量赋值前必须声明局部this必须被赋值 "use strict" function test() { console.log(this); } test(); // 输出undefined 不能重复对变量(报错)和属性名(不报错)赋值不可以使用eval()