zoukankan      html  css  js  c++  java
  • 浅谈ES6——ES6中let、const、var三者的区别

    在了解let、const、var的区别之前,先了解一些什么是es6

    Es6 全称ECMAscript 是JavaScript语言的一个标准,其实Es6本质就是JavaScript的一个版本,为什么叫ECMAscript呢,一个原因是JavaScript商标名称的原因,还有一个是ECMA是一个标准化组织,将这门语言规范化,可以更有利于成为一种国际标准和保持其开放性。

    Es6和es2015、es2016、es2017 ;es6是一个名词也是一个泛指,含义是5.1版以后javaScript的下一代标准,涵盖了es2015、es2016、es2017等等,而其他的es2015这些,都指该年发布的正式版本的语言标准。

    这里给大家推荐一个学习es6的网站,https://es6.ruanyifeng.com/

    Var、let、const区别

    1)Var存在变量提升,而let、const没有:

    Console.log(a)
    
    Var a=1;//undefined,变量已声明,但是未赋值,所以a显示undefined
    
    Console.log(a)
    
    let a=1;//报错
    
    Console.log(a)
    
    const a=1;//报错

    2)let、const形成块作用域,而var没有

    If(true){
    
       var a=10
    
       let b = 10
    
       const c = 10
    
    }
    
    Console.log(a)//10
    
    Console.log(b)//报错
    
    Console.log(c)//报错

    3)同一作用域下,var可以声明同名变量,而let、const不行

    4) Const 是定义常量的关键字,需要注意的是,常量不能被修改;所以const一但声明必须赋值,一旦声明一个变量,就必须马上初始化,如果是复合类型数据,可以修改其属性

      Let声明的值、类型、变量都可以改变

    5)let 是定义变量的关键字,当解析器进入一个块级作用域,发现let关键字,变量只是先完成声明,并没有到初始化那一步。此时如果在此作用域提前访问,则报错xx is not defined,这就是暂时性死区的由来。等到解析到有let那一行的时候,才会进入初始化阶段。如果let的那一行是赋值操作,则初始化和赋值同时进行

    6)什么情况下let更好呢?我在查找资料时看到一篇文章中这样写的:“let 在块作用域中有效,有的时候,我们为了降低变量污染的风险,在块作用域中使用let来代替var,这样不会污染块作用域的外部作用域,降低 bug率,使代码更安全”。let和var相比较,let的优点便是块作用域了,这样可以有效地区分全局作用域和块级作用域的相同的变量了。

  • 相关阅读:
    PPT入门学习笔记1:待修改
    单片机入门学习笔记8:STM32单片机使用
    springboot中redis做缓存时的配置
    LocalDateTime与mysql日期类型的交互(基于mybatis)
    LocalDateTime在spring boot中的格式化配置
    Spring Cloud学习笔记【十】配置中心(消息驱动刷新配置)
    Spring Cloud学习笔记【九】配置中心Spring Cloud Config
    Spring Cloud分布式Session共享实践
    Spring Cloud学习笔记【八】服务网关 Zuul(过滤器)
    Spring Cloud学习笔记【七】服务网关 Zuul(路由)
  • 原文地址:https://www.cnblogs.com/dreamtown/p/13444147.html
Copyright © 2011-2022 走看看