zoukankan      html  css  js  c++  java
  • 【ES6】var / let / const

    1、var在声明所在的函数作用域内有效。  function(){}

       let与const都是只在声明所在的块级作用域内有效。{}

    2、var与let声明的变量可以改变,值和类型都可以改变,没有限制。

         const声明的常量不得改变值,这意味着,const一旦声明常量,就必须立即初始化,不能留到以后赋值,且不能重复赋值。

    const a;    // 报错,一旦声明变量,应该立即赋值!!
    
    const b = 10;
    b = 20;    // 报错,因为定义常量之后不能重新赋值!!
    

    3、对于复合类型的变量,如数组和对象,变量名不指向数据,而是指向数据所在的地址。

      const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变。

    const arr = [];
    arr = [1, 2, 3];   // 报错,因为变量arr指向的地址不能发生改变,应始终指向[]所在的地址!!![1,2,3]与[]不是同一个地址
    

      下面这样就不会报错:

    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    

      对象也是如此,示例如下:

    const obj = {
    	a: 1,
    	b: 2
    };
    obj = { // 报错 a: 3, b: 4 };
    obj.a = 3; // 不报错 obj.b = 4; // 不报错

      

    如果想让定义的对象或数组的内部数据也不能够修改和改变,可以使用Object.freeze(obj)进行冻结,这样为对象添加新属性就不起作用。

    除了将对象本身冻结,对象的属性也应该冻结。

    const obj = {
    	a: 1,
    	b: 2
    };
    obj.a = 9;
    console.log(obj);   // {a: 9, b: 2};  obj.a 发生改变
    Object.freeze(obj);  // 冻结
    obj.b = 99;
    console.log(obj);   // {a: 9, b: 2};  obj.b 未发生改变
    

      参考:let和const命令

    author:Lik
    Endeavoring to powerless, struggling to move yourself.
  • 相关阅读:
    Linux系统与网络服务管理技术
    RAM阵列
    5月9日上海书城PPT畅销图书作者讲座
    计算变为人们梦寐以求的公用设施
    博文视点大讲堂28期 “助你赢在软件外包行业”成功举办
    WebService WSDL详解(上)
    Google十三年
    预编译头sadafx.h原理
    WebService WSDL详解(下)
    Ext 2.2在IE 9运行居然说Extall.j运行错误,晕死了
  • 原文地址:https://www.cnblogs.com/likwin/p/7172302.html
Copyright © 2011-2022 走看看