ITPub博客

首页 > IT职业 > IT职场 > 理解let并 const在JavaScript ES6中(3)

理解let并 const在JavaScript ES6中(3)

原创 IT职场 作者:cenfeng 时间:2019-07-18 17:35:29 0 删除 编辑

let  变量和时间死区

是的,你读得正确 - 在编程世界中有一个称为时间死区的术语,它与僵尸或时移无关,遗憾的是。

在一个区块内,区块开始直到 let 变量初始化 点之间的线条 被称为时间死区。 在该区域中,尝试引用该 let 变量将返回ReferenceError:

1
2
3
4
function test(){<font></font>
     console.log(dog) // returns ReferenceError<font></font>
     let dog = 'spotty' <font></font>
}

这几乎看起来很明显,但传统上, var  由于称为可变提升的概念 , 变量的表现非常不同。 简而言之,使用var定义的变量会自动“提升”到其执行上下文的最顶层(即:如果它是全局变量,则为函数的顶部或脚本的顶部),即使它已在块的下方初始化。 这意味着您可以在实际声明之前引用变量而不会获得ReferenceError:

1
2
3
4
五
function test(){<font></font>
     console.log(dog) // returns undefined<font></font>
     var dog = 'spotty' // variable auto hoisted to the very top of the function (but not its value)<font></font>
     console.log(dog) // ‘spotty’<font></font>
}

undefined 返回 值 ,因为提升仅将变量本身移动到顶部,而不是您可能将其设置为的值。 由于可变吊装,以上相当于以下内容:

1
2
3
4
五
6
function test(){<font></font>
     var dog<font></font>
     console.log(dog) // returns undefined<font></font>
     var dog = 'spotty' // hoisted to the very top of the function<font></font>
     console.log(dog) // ‘spotty’<font></font>
}

对于 let 变量,不涉及变量提升,并且 let 在块内物理声明之前 尝试引用 变量将返回ReferenceError。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69933200/viewspace-2651013/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-06-18

  • 博文量
    125
  • 访问量
    129485