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、不可重复声明

  • 相关阅读:
    ansible常用模块及参数(1)
    ansible搭建wordpress,安装nfs和rsync
    ElasticSearch 集群
    kibana数据操作
    ElasticSearch 交互使用
    Elasticsearch的基础安装
    Elasticsearch的简介
    redis数据审计
    redis数据迁移
    redis集群节点添加与删除
  • 原文地址:https://www.cnblogs.com/momozjm/p/8136010.html
Copyright © 2011-2022 走看看