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 对象

posted @ 2021-03-30 17:18  star-meteor  阅读(39)  评论(0)    收藏  举报