美文网首页
ES6 中的let 与 const关键字

ES6 中的let 与 const关键字

作者: 归子莫 | 来源:发表于2021-06-30 15:17 被阅读0次

ES6 中的let 与 const关键字

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

简介

let和const是es6新增加的两个关键字,主要作用是用来声明变量

let关键字

用法

let声明的变量只在 let命令所在的代码块内有效,不能重复声明

{ 
    let a = 0;  
    var b = 1;
    a   //此时输出 0 
    b   //此时输出 1
} 
a   // 此时报错 ReferenceError: a is not defined
b   // 此时输出 1

常用环境

在使用for循环时,适合使用let命令

for (let i = 0; i < 10; i++){
    ...
}
i // 此时报错 ReferenceError: i is not defined

在上述代码中,i只在for循环体之中有效,在循环体之外调用就会报错

var a = [];
for (var i = 0; i < 10; i++){
  a[i] = function(){
    console.log(i);
  }
}
a[8]();  // 10

在上述代码中,变量ivar命令声明的,在全局范围内都有效,所以全局只有一个变量i

每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 10。

var a = [];
for (let i = 0; i < 10; i++){
  a[i] = function(){
    console.log(i);
  }
}
a[8]();  // 8

如果使用let,声明的变量仅在块级作用域内有效,最后输出的是 8。

不存在变量提升

let不存在变量提升,var存在变量提升

var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefinedlet命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

console.log(a); //ReferenceError: a is not defined 
let a = "apple"; 

console.log(b); //undefined 
var b = "banana";

上述代码中,b在脚本开始运行时就存在了,但是还没有进行赋值,所以返回undefineda在变量声明之前不存在,所以会报错。

const关键字

用法

const声明一个只读变量,声明之后不允许改变

const PI = "3.1415926";
PI  // 此时输出3.1415926

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

const MY_AGE;  // 此时报错SyntaxError: Missing initializer in const declaration    

const一旦声明必须初始化,否则会报错,只声明不赋值也会报错

暂时性死区(TDZ)

只要代码块中包含let或者const,它所声明的变量就会绑定这个区域,不会再受外部的影响

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  const tmp;
}

暂时性死区的范围

在代码块内,使用let或者const命令声明变量之前,该变量都是不可用的。

if (true) {
  // TDZ开始
  tmp = 'abc'; // ReferenceError
  console.log(tmp); // ReferenceError

  let tmp; // TDZ结束
  console.log(tmp); // undefined

  tmp = 123;
  console.log(tmp); // 123
}

感谢

万能的网络

菜鸟教程

阮一峰的es6语法教程

以及勤劳的自己,个人博客GitHub

相关文章

  • js 中声明常量关键字 var、let、const

    js 中声明常量的关键字:var、let、const,其中 let 和 const 是 ES6 中新增的关键字。 ...

  • JavaScript ES6 - let 与 const 使用方

    ES6 语法: let 与 const 本文主要讲解 let / const / var 关键字相关内容, 解释了...

  • 2018-09-04

    js变量和常量 JS中与变量常量声明相关的关键字有var、let以及const,其中let和const是ES6的新...

  • es6 :let const 解构赋值

    let,const let和const是es6新增的两个变量声明关键字,与var的不同点在于:(1)let和con...

  • ES6学习笔记

    VSCode调试ES6:配置方法 一、let & const 关键字 1.1 let & var 对比 let 声...

  • ES6 (一)之 let 与const

    概述 let 、const 是es6中新增的变量声明方式。与var关键字声明相同 特点 1.局部作用域 使用let...

  • javascript碎片知识000

    const let var 3者的区别。 const 和 let 为es6新增的定义变量的关键字。 var存在...

  • 浅谈 var、let 和 const (一)

    浅谈 var、let 和 const (一) 前言 ES6新增了 let 和 const 两个关键字 ,用于声明变...

  • ES6 新特性

    1.const和let ES6中新增的const和let关键字,在定义常量和变量时不会存在变量提升的情况,而且通过...

  • 1.let-const-var

    var 在 es6 中引入了 let 和 const 关键字声明变量,弥补了 var 关键字的缺陷 functio...

网友评论

      本文标题:ES6 中的let 与 const关键字

      本文链接:https://www.haomeiwen.com/subject/emerultx.html