编辑
2023-03-23
ES6
0
请注意,本文编写于 535 天前,最后修改于 515 天前,其中某些信息可能已经过时。

目录

补充概念
ECMAScript与JavaScript的关系
ES6
说明
块级作用域
说明
表现形式
let
说明
特点
let是所声明的变量只在let所在的代码块内(块级作用域)有效
let声明的变量不存在变量提升,只能声明变量后再使用
暂时性死区TDZ
let不允许重复声明
const
说明
<font style="color:red">特点</font>
同一作用域内一但申明则不允许修改,且不能重复声明
只在自身所在的块级作用域内有效,外部无法访问
不存在变量提升,且必须声明时赋值
存在暂时性死区,不能在声明之前访问
const的本质

补充概念

ECMAScript与JavaScript的关系

ECMAScript制定了语法标准而JavaScript则是对语法标准的实现

ES6

ES6包含ES2015版本之后的所有版本,对JS的一个补充,E全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化

说明

ES6中新增加了两个声明语句,分别为let变量声语句和const常量声明语句

块级作用域

说明

let命令和const命令都为JavaScript新增了块级作用域

表现形式

//都有一对大花括号构成块级作用域 { }

let

说明

ES6新增变量声明语句,用法类似于var

特点

let是所声明的变量只在let所在的代码块内(块级作用域)有效

{ var len1 = 3 let len2 = 4; } console.log(len1); // 3 console.log(len2); //ReferenceError: len2 is not defined(参数错误,len2没有定义)

let声明的变量不存在变量提升,只能声明变量后再使用

console.log(len1); var len1 = 3; //undefined console.log(len2); let len2 = 4; //ReferenceError: Cannot access 'len2'before initialization //报错,未初始化之前不能访问len2

暂时性死区TDZ

当块级作用域内存在let命令,其所声明的变量就绑定块级作用域,凡是在let命令之前使用这些变量就会报错

var tmp2 = 123; if (true) { tmp2 = 'abc'; // ReferenceError let tmp2; }

let不允许重复声明

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

const

说明

用于声明一个常量

特点

同一作用域内一但申明则不允许修改,且不能重复声明

只在自身所在的块级作用域内有效,外部无法访问

不存在变量提升,且必须声明时赋值

存在暂时性死区,不能在声明之前访问

const的本质

const保证的是变量指向的内存地址所保存的数据不得改动

  • 对于简易数据类型(string、number、bollean),值保存在栈中,即值就保存在变量所指向的内存地址
  • 对于对象和数组,值保存在堆中,内存地址中的数据实际上是一个指向堆内存中实际数据的指针,const只能保存这个指针始终不变,但是堆内中的值则无法保证

本文作者:RKLS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!