失效链接处理 |
ES6?场景?024 PDF 下蝲
相关截图Q?/strong>
![]() 主要内容Q?/strong>
1.解释ES6引⼊?nbsp;let ?nbsp;const ?nbsp;var 的区?/span>
ES6QECMAScript 2015Q引h了(jin) let ?nbsp;const q两个新的关键字来声明变量,与之前的 var 关键
字相,它们提供?jin)更严格的作域规则和块U作域。以下是 let ?nbsp;const ?nbsp;var 之间的主?/span>
区别Q?/span>
1. 块作T域:(x)
?/span>
var 声明的变量具有函C域或全局作T域,不具备块U作域Q即h对花括号 {} ?/span>
部)(j)?/span>
?/span>
let ?nbsp;const 声明的变量具有块U作域Q这意味着它们只在其声明的代码块内可T?/span>
2. 变量提升QHoistingQ:(x)
?/span>
低T var 声明的变量存在变量提升(hoistingQ现象,卛_量声明会(x)被提升到其所在作域?/span>
剙。但变量的赋g然保留在原来的位|?/span>
?/span>
let ?nbsp;const 声明的变量不存在变量提升Q这意味着在声明之前访问这些变量会(x)抛出
ReferenceError ?/span>
3. 暂时性死区(Temporal Dead Zone, TDZQ:(x)
?/span>
?nbsp;let ?nbsp;const 声明的变量被初始化之前的区域被称为暂时性死区。尝试在暂时性死区内?/span>
问这些变量会(x)抛出 ReferenceError ?/span>
4. 重新声明Q?/span>
?/span>
低T var 可以在同h作T域内多次声明同⼀个变量,不?x)报错,但这样做会(x)导致淆和不?/span>
预期的结果?/span>
?/span>
let ?nbsp;const 不允许在同⼀作T域内重复声明同⼀个变量,否则?x)抛?nbsp;SyntaxError ?/span>
5. 帔R声明Q?/span>
?/span>
var ?nbsp;let 都可以声明可变的变量?/span>
?/span>
const 于声明h个常量,其值在初始化后不能被重新赋倹{但需要注意的是, const 声明
的变量指向的内存地址是不可变的,但如果该变量引T的是h个对象或数组Q对象或数组内部
的值是可以改变的?/span>
6. 全局作T域中的声明:(x)
?/span>
在全局作T域中低T var 声明的变量会(x)成ؓ(f)全局对象的属性(在浏览器中是 window ?/span>
象)(j)?/span>?/span>
低T let ?nbsp;const 在全局作T域中声明的变量不?x)成为全局对象的属性,它们只存在于全局
作T域中?/span>
通过引⼊ let ?nbsp;const QES6为JavaScript提供?jin)更清晰的作域规则和更安全的变量声明⽅式?/span>
有助于减因变量提升和全局变量污染D的错误?/span>
|