zoukankan      html  css  js  c++  java
  • es6从零学习(一)let 和 const 命令

    es6从零学习(一):let 和 const 命令

    一:let 变量

    1、块级作用域{}:let只在自己的块级作用域内有效。

    for(let i =0;i<3;i++) {
            console.log(i)
    }
    console.log(i)
    

    以上代码输出0,1,2之后,输出了i is not defined。因为i是let定义的,只能在自己的块级作用域读取到。

    for(var i =0;i<3;i++) {
            console.log(i)
    }
    console.log(i)

    以上代码输出0,1,2,3。

    2、let定义的变量不要重复定义,会报错。

    let a = 1
    let a = 3
    

      

    二:const:常量

    1、声明必须定义值

    const num
    

    此时会报错

    2、不能重复定义

    const num = 2
    const num = 4
    

    此时会报错  

    3、const定义的对象,可以修改对象的值

     const k = {
            a: 1
    }
    k.a = 2
    k.b = 2
    console.log(k)
    

    此时输出的值为{a:2,b:2}

    原因:因为const定义的是k,而k相当于一个指针,指向对象值,对象值修改和k怎么定义没有关系。

    4、const定义的数组,可以修改数组的值

    const k = [1,2,3]
    k[0] = 2
    console.log(k)
    

    此时输出的值为[2,2,3]。原因与上面一致

    总结:

    const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

    三:let和const的共同点:

    1、一旦声明变量,就必须立即初始化

    2、只在声明所在的块级作用域内有效

    3、声明的常量不提升,存在暂时性死区,只能在声明的位置后面使用。(声明必须在使用之前)

    4、不可重复声明

  • 相关阅读:
    SpringMVC核心分发器DispatcherServlet分析[附带源码分析]
    SpringMVC异常处理机制详解[附带源码分析]
    SpringMVC重定向视图RedirectView小分析
    容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)
    nohup介绍
    docker创建ceph集群
    maven单元测试设置代理
    Kubernetes服务之“运行单实例的有状态服务”
    关闭chrome浏览器的developer tools
    Kubernetes服务之StatefulSets简介
  • 原文地址:https://www.cnblogs.com/momozjm/p/8136010.html
Copyright © 2011-2022 走看看