阅读 92

let和const命令

一、let命令

1.基本用法

ES6 新增了let 命令,用于声明变量。其用法类似于var,但是所声明的变量只在 let命令所在的代码块内有效。

{
    let a = 10; 
    var b = 1;}
a // ReferenceError: a is not defined. 
b // 1复制代码

2.不存在变量提升

// var 的情况
console.log (foo );  // undefined
var foo = 2 ; 
// let 的情况
console.log (bar);  // 报错 ReferenceError
let bar = 2 ; 
复制代码

3.暂时性死区

只要块级作用域内存在 let 命令,它所声明的变量就“绑定”(binding)这个区域,不再

受外部的影响。

var tmp = 123; 
if (true) { 
    tmp = 'abc'; // ReferenceError 
    let tmp;
}复制代码

上面的代码中存在全局变量 tmp ,但是块级作用域内 let 又声明了一个局部变量 tmp ,导

致后者绑定这个块级作用域,所以在 let 声明变量前,对 tmp 赋值会报错。

在代码块内,使用 let 命令声明变量前,该变量都是不可用的。这在语法上称为“暂时性死区”( temporal dead zone ,简称 TDZ )。

if(true) { 
    // TDZ 开始
    tmp = 'abc'; // ReferenceError 
    console.log(tmp); // ReferenceError 
    let tmp ; // TDZ 结束
    console.log(tmp) ; // undefined 
    tmp = 123 ; 
    console.log(tmp ); // 123 
}复制代码

暂时性死区的本质就是,只要进入当前作用域,所要使用的变量就己经存在,但是不可获取,只有等到声明变量的那行代码出现,才可以获取和使用该变量。

4.不允许重复声明

**let** 不允许在相同作用域内重复声明同一个变量。

function func(arg) { 
    let arg; // 报错
}function func(arg) { 
    {        let arg; // 不报错
    }
}复制代码

二、const命令

1.基本用法

const声明一个只读的常量。一旦声明,常量的值就不能改变。这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

const PI = 3 .1415 ; 
PI // 3.1415 
PI = 3; 
// TypeError: Assignment to constant variable. 

const foo; 
// SyntaxError : Missing initializer in const declaration复制代码

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

if (true) {
  const MAX = 5;
}
MAX // Uncaught ReferenceError: MAX is not defined复制代码

const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

if (true) {
  console.log(MAX); // ReferenceError
  const MAX = 5;
}复制代码

2.ES6声明变量的6中方法

ES5 只有两种声明变量的方法 使用 var 命令和 function 命令。 ES6 除了添加了 `let

``const命令,还可以使用import命令和class`命令。所以, ES6 一共有 种声明变量的方法。


作者:疏影流年
链接:https://juejin.cn/post/7016600456499560484

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐