Blogger Information
Blog 12
fans 0
comment 0
visits 8882
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2020-05-28——ES6 let与const及其相关
A 枕上人如玉、
Original
563 people have browsed it

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声明的全局变量,不属于顶层对象的属性。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post