【javascript基础】延长作用域链
2012-11-16 11:59 sniper007 阅读(553) 评论(0) 编辑 收藏 举报延长作用域链,意思是,在当前作用域链的前端临时添加一个变量对象。该变量对象会在代码执行完之后移除。
这通常发生在两个语句中,
- try-catch的catch语句
- with语句
对于with语句而言,其变量对象中包含为指定对象的所有属性和方法所作的变量声明。对于catch而言,其变量对象包含被抛出错误对象的声明。
举个例子:
+function(){
try{
alert(x);
}catch(e){
console.log(e);
}
console.log(e);
}()
try{
alert(x);
}catch(e){
console.log(e);
}
console.log(e);
}()
标准浏览器,
而IE8,结果如下:
在IE中,catch语句之外也可以访问到错误对象,很奇怪