首页 > 其他分享 >ES6 的 新特性 1 let,const

ES6 的 新特性 1 let,const

时间:2023-07-06 16:24:44浏览次数:40  
标签:ES6 const 变量 作用域 let var 报错 声明

Let,Const,Var 可以放一起说

这三个都是JS中用来声明变量的关键字。

主要的区别是

1.作用域

Var声明的变量的作用域是当前的执行上下文,也就是说,如果在函数外部声明,则是全局变量,如果是函数内部声明,则是整个函数块的变量。

Let声明的变量的作用域则是当前的代码块,也就是说可以像var一样是全局或者整个函数块,也可以是if,for,while等用{}括起来的代码块中的变量。

    $(function () {
        var a = 1;
        if(1==1)
        {
            var a = 2;
            alert(a);
        }
        alert(a);

        let b = 1;
        if(1==1)
        {
            let b = 2;
            alert(b);
        }
        alert(b);
    });

这个例子中,a两次弹出都是2,因为a在function中是同一个变量,而b分别弹出2,1,因为不是同一个变量。

可以看出,let声明的变量可以有更小的有效范围,更加灵活。

 

2.重复声明

在同一作用域中,var 可以重复声明,但是let不行。

以上面的代码为例,把 if 这个代码块删掉,只保留里面的声明部分。var 声明了 两次a变量,不会报错,但是let声明两次会报错,因为此时两次声明b都发生在同一个作用域中。

 

3.变量提升和暂存死区

var 声明的变量存在变量提升

简单来说就是变量可以先使用,后声明,只是先使用的时候不会报错,而是值是undefind,原因是var 声明的变量,在执行上下文创建的阶段就被 创建+初始化,只是没有赋值。

而let不会,只会报错,因为 在执行上下文创建的阶段 只会 创建,没有初始化,而使用未初始化的变量是会报错的。

 

4. Const 与 let

两者很类似,唯一的区别就是,const声明的变量不能改变值,声明时必须赋值。

    $(function () {
       const a = 1;
       a = 2;

    });

比如这样就会报错。

 

标签:ES6,const,变量,作用域,let,var,报错,声明
From: https://www.cnblogs.com/luyShare/p/17532314.html

相关文章

  • 报错 Cannot construct instance of `java.time.LocalDate` LocalDateTime
    原因:报错的原因就是导入了JacksonObjectMapper对象映射器,导致不知道怎么将LocalDateTime转换成Json类型的数据了,在没有导入使用JacksonObjectMapper的时候是不会报错的。解决方式:指定LocalDateTime类型的数据如何进行序列化就好了,给实体类中LocalDateTime的属性加上注解就可以了:......
  • Windows+Celery4+eventlet,异步报错:Recursion Error: maximum recursion depth exceede
    前情提要:Windows环境下,使用Celery4和eventlet,在Django项目中启用异步和周期,报错如下:RecursionError:maximumrecursiondepthexceededwhilecallingaPythonobject经过排查,只找到解决方法:改为使用gevent1、安装:pipinstallgevent2、在manage.py文件中添加以下代码imp......
  • CompletableFuture 类
    CompletableFuture异步编排在Java8中,新增加了一个包含50个方法左右的类:CompletableFuture,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合CompletableFuture的方法Completab......
  • 超全!阿里P7大佬内部首发Servlet详解笔记,掌握吃透只需2小时
     Servlet简介Servlet是运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API动态的向客户端输出内容。servlet规范:包含三个技术点1)servlet技术2)filter技术—过滤器3)listener技术......
  • JavaScript(七)ES6
    Node环境安装nvm、npm、nrmnvm:管理多个版本的node环境,使用nvm安装nodejsnpm:npm是node的包管理工具,使用nvm安装node后,就可以使用npm命令nrm:管理npm的镜像源,使用npm命令安装Babel转码器可以将es6代码转成es5代码。从而可以在老版本浏览器执行在项目根目录下安装np......
  • ASP.NET MVC PUT DELETE 404 C# mvc delete put 失败
    对于使用Url路由访问页面的ASP.NET应用程序,IIS可能会显示404,403之类的错误代码,而且排除了代码问题(本地运行正常),那么就可以加下面这句话:<system.webServer><modules><removename="UrlRoutingModule-4.0"/><addname="UrlRoutingModule-4.0"type="......
  • Servlet 生命周期、工作原理
    Servlet生命周期、工作原理Servlet生命周期:Servlet加载—>实例化—>服务—>销毁。init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少......
  • 浅析 Servlet 执行原理
    在JavaWeb学习研究中,Servlet扮演重要的作用,学好它,是后续JavaWeb学习的良好基础。无论是SSH,还是SSM,微服务JavaWeb技术,都应先学好Servlet,从而达到事半功倍的效果,本篇将主要分析Servlet的运行原理。一、UML下图为ServletUML关系图。从图中,可以看出:1.抽象类HttpServlet继承抽象类Gene......
  • es6 iterator
    //需求使用forof便利对象并返回对象数组的值letbanji={name:"火箭一班",stus:["limuzi","nini","zhaoliying","xiena"],[Symbol.iterator](){let_this=this......
  • es6 中Symbol
    letgame={up:function(){console.log("upmethods!")},down:function(){console.log("downmethods!")}}//es6symbol用法可以给已经封装好的方法上加上方法letmethods={up:Symbol(),down:Symbol()}......