ECMAScript中的执行环境

在ECMAScript中,只有两种执行环境,全局环境和函数环境,每个函数都是一个执行环境,包括嵌套函数。换句话说,其他情况下即使变量声明在一对大括号中,在括号外部仍然可以访问这些变量,例如:

 for(var i=0;i<5;i++){
     var num=20;   //在for语句中声明的变量
 }
 alert(num);  //在for语句外部调用变量,仍然可以得到num的值

对异常语句同样可以:

try{
     var num=20;  //在try语句中声明的变量
     a=b;  //引起一个异常
  }catch(e){
     alert(num);  //在catch语句中调用变量,将得到20
  }finally{
     alert(num);  //在finally语句中调用变量,将得到20
  }
    alert(num);   //在try语句外部调用变量,将得到20

除了上面所演示的两种语句外,一对大括号也无法构成一个执行环境,例如:

{
    num=1;
}

但是JavaScript没有块级作用域的一个例外恰好是其异常处理,try...catch语句将捕获的异常绑定到一个变量,该变量的作用域只是catch语句块。例如下面一段代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>ECMAScript中的执行环境</title>
</head>
<body>
    <script>
       function test(){
         var x='var',result=[];
         result.push(x);
         try{
            throw 'exception';
         }catch(x){
            //alert(x);  执行这一句会弹出exception
            x='catch';
            //alert(x);   执行这一句会弹出catch
         }
         //alert(x);   执行这一句会弹出var
         result.push(x);
         return result;
       }
      test();
    </script>
</body>
</html>

运行结果如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值