zoukankan      html  css  js  c++  java
  • var 、 let 和 和 const 区别及实现原理

    区别:

    • var和let用以变量声明常量,const用于声明只读常量;
    • var声明的变量,不存在快级作用域,在全局范围内都有效,let和const声明的,只在它所在的代码块内有效;
    • let和const不想var存在变量提升现象,所以var定义的变量可以先使用后声明,let和const只能先声明后使用;
    • let声明的变量存在暂时性死区,即只要块级作用域中存在let,那么它声明的变量就绑定了这个区域,不再受外部的影响;
    • let不允许在相同作用域内声明同一个变量;
    • const在声明变量时必须初始化赋值,一旦声明,其声明的值就不允许改变,更不允许重复声明,如const声明了一个复合类型的常量,其存储的是一个引用地址,不允许改变的是这个地址,而对象本事是可变的;

    变量与内存之间的关系,主要由三个部分组成:

    • 变量名
    • 内存地址
    • 内存空间
      JS 引擎在读取变量时,先找到变量绑定的内存地址,然后找到地址所指向的内存空间,最后读取其中的内容。当变量改变时,JS 引擎不会用新值覆盖之前旧值的内存空间(虽然从写代码的角度来看,确实像是被覆盖掉了),而是重新分配一个新的内存空间来存储新值,并将新的内存地址与变量进行绑定,JS 引擎会在合适的时机进行 GC,回收旧的内存空间。const 定义变量(常量)后,变量名与内存地址之间建立了一种不可变的绑定关系,阻隔变量地址被改变,当 const 定义的变量进行重新赋值时,根据前面的论述,JS 引擎会尝试重新分配新的内存空间,所以会被拒绝,便会抛出异常。
  • 相关阅读:
    ORA-30567: name already used by an existing
    vue router 需要go(-2)才能返回前一页
    MVC理解
    细说业务逻辑(后篇)
    细说业务逻辑(前篇)
    Python学习笔记-风变编程
    Python3 基础语法最常⻅报错类型&示意
    删除我的电脑/此电脑里的多余图标(坚果云、百度网盘、腾讯XX、WPS)
    vue 父组件传递方法 :和@的区别
    最全 Neo4j 可视化图形数据库的工具!
  • 原文地址:https://www.cnblogs.com/0314dxj/p/13994500.html
Copyright © 2011-2022 走看看