es6中的暂存性死区

    技术2024-07-30  72

    暂存性死区

    暂存性死区是相对于某一个变量来说的,就是在定义该变量之前的区域就是暂存性死区

    const i = 1 { //死区开始 console.log(i) //死区里边拿不到外边的i,也拿不到本代码块内的i //死区结束 const i = 2 console.log(i) //直到这里才能正常使用 i }

    来看以下几种情况:

    情况一:代码块里边不存在 let i

    let i = 0 {//这就是一个块的起始 console,log(i) //如果本块内没有定义 i ,根据作用域链,自然而然可以使用外边的i,此时输出0 }//块的结束

    情况二:代码块里边存在 let i

    let i = 0 {//这就是一个块的起始 let i = 1 console,log(i) //显然本代码块内定义了一个i, 所以不做过多解释,根据作用域链指定是输出 1 }//块的结束

    情况三:代码块里边存在 let i ,但是在定义之前使用了i

    let i = 0 {//这就是一个块的起始 console,log(i) let i = 1 }//块的结束

    错误类型如图:

    总结:

    出现本错误的原因就是由于暂存性死区:

    只要我在本代码块内声明了 i,那就只能使用本代码块内声明的 i,哪怕在我定义之前使用了i也不能使用外边的i(霸道)let、const不存在变量提升(这也就导致程序会报错,而不输出undefined)
    Processed: 0.029, SQL: 9