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創建的塊作用域)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM