美文网首页
let a = a 会是什么结果 为什么?

let a = a 会是什么结果 为什么?

作者: yoolika | 来源:发表于2019-03-04 14:15 被阅读0次

Uncaught ReferenceError: a is not defined
分为2个阶段:

  1. 在预编译阶段,将let声明的变量放到暂存性死区TDZ中 TDZ=[a]

  2. 当let声明语句结束之后,这里的结束指的是,当let a = a执行完事后,会把a从TDZ拿出来。
    但是let a = a执行的时候,右侧赋值的a还在TDZ中,所以报错。也就是未声明就使用的错误。

所以,大家在使用let变量时,切记一定要先声明后使用

ES6 let与块级作用域
块级作用域

  • 什么叫块级作用域?除了对象字面量上的大括号 都叫块级作用域
    例:{
    //产生TDZ[]
    var a=10;
    let b=100;
    //TDZ结束
    }
    console.log(a); 10
    console.log(b); 报错
    for循环也是
    let 具有识别块级作用域的能力

  • 不存在变量提升
    console.log(str); 报错 typeof也不好使
    let str=10;
    在预编译过程中 let 暂时性死区(TDZ tempral dead zone)

js扫码的时候

  1. var整体提升
  2. let a=1; let a放入一个暂时性死区 ,如果使用变量的时候 在TDZ中发现变量在里面就报错
    当执行到let a =1;释放出来
  3. 统领当前作用域
    先定义 再使用
  • 不能重复定义
    let a = 'xn'
    let a = 'xx' 报错 已经被定义

相关文章

  • let a = a 会是什么结果 为什么?

    Uncaught ReferenceError: a is not defined分为2个阶段: 在预编译阶段,将...

  • 2021-06-24

    我为什么会是这种人,非要亲耳听到结果才肯死心!

  • 2018-01-16

    本以为答案会是令自己伤心的结果 结果并不是 为什么反而我更难过了 ....

  • let VS var

    是什么 let const是ECMAScript 6提供的新特性。let可以解决var的“不完美“。 为什么(va...

  • 众生畏果 菩萨畏因

    很多时候当看到结果不好的时候都在抱怨,为什么会是这样的结果;其实凡事都要追根溯源,有果必有因。。。。在抱怨结果...

  • Wlog.4 片刻即永恒

    2022.3.1 为什么不直接… 为什么走完一圈才来… 结果一样的事物,它们的本质会是一样吗? 对未知的好...

  • Hi式复盘实战营Day18/21作业

    18/21今日作业:日复盘一天一件事 1️⃣记录: 期望结果、实际结果 2️⃣反思:为什么会是这种结果? 正确行为...

  • 通过url下载文件。而不是打开文件

    ``` 代码如下,为什么手机写不了markdown,。。。。。。。。。。 ``` let url = 'http:...

  • FUCK!!!

    还是没能压制住自己内心的感受,越想不去在意这个事情,脑海里越是在想为什么,为什么结果会是这样,不如将所有的事情重新...

  • ES6 的部分知识点

    为什么要有 let 以前都是用的 var ,let 出现就是解决 var 带来的问题。 var 的缺点: 重复声明...

网友评论

      本文标题:let a = a 会是什么结果 为什么?

      本文链接:https://www.haomeiwen.com/subject/vafiuqtx.html