let和const
let
1.块级作用域(ES5 只有全局作用域和函数作用域)
 (1).只在let命令所在的代码块内有效(for)。
var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); 、、6
(2).块级作用域替代匿名立即执行函数表达式
// IIFE 写法 (function () { var tmp = ...; ... }()); // 块级作用域写法 { let tmp = ...; ... }
2.不存在变量提升
3.暂时性死区(只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。)
只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
4.let不允许在相同作用域内,重复声明同一个变量
const
1.const声明一个只读的常量。一旦声明,常量的值就不能改变
2.只在声明所在的块级作用域内有效
3.不存在变量提升
4.暂时性死区
5.不可重复声明
注: const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动,,但对象本身是可变的,可利用Object.freeze将对象冻结
ES6 声明变量的六种方法
var function (const let import calss 不是顶层对象的属性)
ES2020 globalThis 对象
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号