• 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创建的块作用域)

     

  • 相关阅读:
    win7(64bit)python相关环境模块搭建
    memcached在windows下的安装与命令使用方法
    pomelo流程
    pomelo 初始化配置...
    pomelo组件..
    <转>如何高效快速看懂Android源码
    源码学习
    计划
    Android面试题集锦 (转)
    Android 面试题(转)
  • 原文地址:https://www.cnblogs.com/wccc/p/6718386.html
Copyright © 2020-2023  润新知