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; 提升到函数顶部。 赋值在原位置不动。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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