let暂时性死区理解「建议收藏」

let暂时性死区理解「建议收藏」Let中提到的暂时性死区到底是什么,它的产生原因是? ES6规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”,也就是说使用let声明的变量都是先声明再使用,不存在变量提升问题。letmyname=’sxx’;{console.log(myname);l…

大家好,又见面了,我是你们的朋友全栈君。

  1. Let 中提到的暂时性死区到底是什么,它的产生原因是?

      ES6 规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”,也就是说使用let声明的变量都是先声明再使用 ,不存在变量提升问题。

let myname= ‘sxx’;

{

    console.log(myname);

   let myname= ‘sdx ‘;

}//报错

报错原因:在块作用域内,let声明的变量被提升,但变量只是创建被提升,初始化并没有被提升(初始化就是给变量先赋值成undefined),在初始化之前使用变量,就会形成一个暂时性死区。

【注】

·var的创建和初始化被提升,赋值不会被提升。

·let的创建被提升,初始化和赋值不会被提升。let 和 const 作用基本一致,但是const 声明的变量不能再次赋值

·function的创建、初始化和赋值均会被提升。

2.为什么let,const有暂时性死区,而var没有?

因为var有预处理机制,也就是变量提升; 声明提前指的是,不管变量被声明在函数什么位置,这些声名都会被提升至函数顶部。 比如 var a = 1; 会把var a; 提升到函数顶部。 赋值在原位置不动。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149153.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据风控模型是什么?有哪些?

    大数据风控模型是什么?有哪些?摘要:在互联网金融行业,不少人可能这样觉得:认为只要数据够“大”,就能有最牛逼的风控体系和行业最低的坏账率。在互联网金融行业,不少人可能这样觉得:认为只要数据够“大”,就能有最牛逼的风控体系和行业最低的坏账率。这种理解有些过于简单了。其实,做大数据风控是一个挺细致的事儿,大数据风控,重要的不是数据本身,而是对数据的理解。类似的话,哈佛大学的GaryKing教授也说过,…

    2022年6月1日
    43
  • HTML meta refresh 刷新与跳转(重定向)页面

    HTML meta refresh 刷新与跳转(重定向)页面

    2021年9月24日
    59
  • 一个标准的x.509数字证书包括哪些内容?(数字证书的功能是)

    1、什么叫数字签名数字签名:将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名2、什么叫数字证书数字证书:数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在In

    2022年4月15日
    125
  • 神经网络loss函数意义_lossfunction

    神经网络loss函数意义_lossfunctionL1Loss平均绝对误差(MAE),用于回归模型对于包含NNN个样本的batch数据D(x,y)D(x,y)D(x,y),losslossloss计算如下:loss=1N∑n=1Nlnloss=\frac{1}{N}\sum_{n=1}^{N}l_{n}loss=N1​∑n=1N​ln​其中,ln=∣xn−yn∣l_{n}=\left|x_{n}-y_{n}\right|ln​=∣xn​−yn​∣classL1Loss(_Loss):__constants__=[‘redu

    2022年9月18日
    2
  • 数据库select语句详解

    数据库select语句详解SELECT1.基本语法select*from表名查询这张表所有内容。select列名from表名查询这张表某一列所有内容。select列名1,列名2…from表名查询这张表的列1,列2,等多列。selectdistinct列名from表名查询这一列去掉重复内容后的内容。select表达式from表名查询表达式,下面会详细讲。select列名(表达式)as别名from表名给某一列或表达式取别名。2.例子如下这张表emp:1)检索单个

    2022年6月6日
    40
  • 软件测试笔记总结(探灵笔记手机版下载教程)

    软件测试复习(部分)概述程序+文档+数据=软件狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果和实际结果间的差别为什么要做软件测试发现软件缺陷功能错功能遗漏超出需求部分(画蛇添足)性能不符合要求软件质量高低:是否符合用户习惯、符合用户需求测试…

    2022年4月15日
    101

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号