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的优点便是块作用域了,这样可以有效地区分全局作用域和块级作用域的相同的变量了。

  • 相关阅读:
    iOS进阶_三方使用步骤
    Runtime
    感想
    git
    随笔感想
    关于APP上架问题需要ipad图标的问题
    ubuntu安装
    JNI和NDK
    数据结构——队列链表实现
    数据结构——栈的实现(数组、Java)
  • 原文地址:https://www.cnblogs.com/dreamtown/p/13444147.html
Copyright © 2011-2022 走看看