JS的块级作用域

今天带来的是 “对《你不知道的js》中块级作用域的总结” 分享:

1)用with从对象中创建出来的作用域只在with声明中而非外部作用域有效,同时可以访问已有对象的属性并将其添加到已有对象上

代码demo:

         var obj = {
             a:1,
             b:2,
             c:3
         };
         with(obj){
             a=3;
             b=4;
             c=5;
d=6; } console.log(obj);
//3,4,5

2)try/catch 的catch分句会创建一个块级作用域,其中声明的变量仅在catch内部有效

代码demo:

        try{
            undefined();//执行一个非法操作来强制制造一个异常
        }
        catch(err){
            console.log(err);//能够正常执行
        }
        console.log(err);//ReferenceError:err is not defined

3)let用法:可以将变量绑定到所在的任意作用域中(通常是{...}内部)

代码demo:

         for(i = 1; i < 5; i++){
             console.log(i);//1 2 3 4
         }
         console.log(i);//5

         for(let j = 1; j < 5; j++){
             console.log(j);//1 2 3 4
         }
         console.log(j);//ReferenceError: j is not defined

由于let创建的是块级作用域,所以外部无法访问到let声明的变量

4)const:可以用来创建块作用域变量; 其值是固定的(常量),之后任何试图修改值的操作都会引起错误

代码demo:

        var foo = true;
        if(foo){
            var a = 2;
            const b = 3;//包含在if中的块作用域常量
            a = 3;//正常
            //b = 4;//错误
            //console.log(b);//TypeError: invalid assignment to const `b'(这里说明其值为常量,之后不能更改其值)
        }
        console.log(a);//3
console.log(b);//ReferenceError!(这个异常可以证明const创建的块作用域)

 

 

 

转载于:https://www.cnblogs.com/wccc/p/6718386.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值