zoukankan      html  css  js  c++  java
  • var和let的区别

    let和var的区别

      1 用let 会产生变量提升的问题

      2 let 声明函数存在暂时性死区问题

      3 let 不允许重复声明变量

      4 let存在于块级作用域{}中,var在块级作用域之外也能访问

      5 最外层用var 声明的变量是全局变量(window),用let不是

    const的特性和let基本一致,但是const是用于声明常量的

      const声明的是常量即不可变量,但实际上,如果const声明的是一个对象,我们是可以改变对象内部的属性的。原因是,const实际上保证的不是变量的值不被改动,而是内存地址不被改动,对于基本数据类型而言,变量保存的地址就是栈地址,是不可以被改变的。但是对于引用类型来说(对象和数组),变量保存的地址是一个堆内存的指针,const只可以保证指针是固定的(堆内存地址),但是如果对象的值改变了是控制不了的,所以将一个引用类型用const声明常量是要注意的。

    所以,如果要声明一个对象为常量,我为大家提供一个冷冻对象的方法,这里用到es6的Object.freeze(冷冻对象)方法:

     /**
         * 冻结对象(声明一个不可修改的对象)
         * @param {*} obj  需要冻结的对象
         * 返回值:被冻结的对象
         * jsHelper.freezeObj({num:1})
         */
    
        freezeObj(obj){
            Object.freeze(obj); //首层冻结
            Object.keys(obj).forEach((key,i)=>{ //深层递归冻结
                if(this.typeOf(obj[key]) === 'object'){
                    this.freezeObj(obj[key])
                }
            })
            return obj;
        }

      //用法
      const obj = freezeObj({name:'panda'})
  • 相关阅读:
    2单表CRUD综合样例开发教程
    1代码表样例开发教程
    ProcessOn
    UniEAP Platform V5.0 Unable to compile class for JSP
    Message Unable to compile class for JSP
    UniEAP Platform V5.0建库
    UML_2_浅谈UML的概念和模型之UML九种图
    PPT鼠绘必须掌握的PPT绘图三大核心功能
    PPT添加节
    remap.config文件配置模板
  • 原文地址:https://www.cnblogs.com/panda-programmer/p/13040030.html
Copyright © 2011-2022 走看看