博客列表 >2020-05-28——ES6 let与const及其相关

2020-05-28——ES6 let与const及其相关

A 枕上人如玉、
A 枕上人如玉、原创
2020年05月28日 18:28:28562浏览

1.块级作用域

ES6新增了块级作用域,总结一句话大致就是:大括号{}包起来的代码块基本山都可以当做块级作用域。

常见的有

直接使用{}包起来:

  1. {
  2. var a = 4
  3. }

函数体大括号,if-else大括号,for循环大括号,switch大括号,try-catch大括号等。需要注意的是,for循环,每一次循环时的{}都是一个独立的块级作用域。

  1. for(let i=0; a < 5; i++){ let j = i}

上面代码循环了五次,实际上有五个独立的j。

日常开发中,我们就可以利用这个特性,来创建块级作用域了。

2.块级作用域变量let与const

使用let或const声明的变量只在当前块级作用域生效,出了这个代码块,就无法访问。

  1. { let a = 5 }console.log(a)
  2. // Uncaught ReferenceError: a is not defined

日常开发中,块级作用域中使用的变量,尽量使用let或者const声明。

需要注意的问题:

let和const变量一定要先声明,再使用,避免出错。不要试图利用变量提升的特性。
const声明变量时,一定要初始化,否则会报错。let建议也在声明时初始化。
const声明的变量一旦初始化,以后就不可以在进行赋值操作,但可以对其引用的对象进行更改。

  1. const noChangeMe;
  2. //Uncaught SyntaxError: Missing initializer in
  3. const declarationconst noChangeMe = [1,2,4]noChangeMe = [2, 3]
  4. //Uncaught TypeError: Assignment to constant variablen
  5. oChangeMe[100] = 100
  6. // everything is OK

let和const声明的变量不能再重复声明。虽然var可以无限次重复声明,但是并不适用于这两个新的声明方式。

  1. let a = 1
  2. let a = 2
  3. // Identifier 'a' has already been declared

不要用window.xxx去调用let与const声明的变量 ES6规定,let、const、class声明的全局变量,不属于顶层对象的属性。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议