ECMAScript
一般缩写为ES,通常看做JavaScript的标准化规范,实际上JavaScript是ECMAScript的扩展语言,在ECMAScript中只提供了最基本的语法,JavaScript语言本身指的就是ECMAScript。
从2015开始ES保持每年一个大版本的迭代,从ES2015开始,ES不在以版本号命名(比如:ES3/ES4),开始按照发行年份命名,这个决定是在ES2015诞生的过程中产生的,所以很多人也把ES2015称之为ES6
LET
在es2015(es6)以前,es中只有两种作用域:全局作用域、函数作用域。
在ES2015中新增了:块级作用域,什么是块级:就是代码中用一对花括号包裹起来的范围,
比如if(){} 、 for(){}
以前块是没有独立的作用域的,所以在块中定义的变量,在外部能也访问到,
就比如
然而新增的let,则使外部无法访问到,如
CONST
用来声明只读的 恒量/常量,它的特点就是在 let 的基础上多了一个 “只读”的特性,
所谓“只读”指的就是:变量一旦声明过后就不允许再被更改
所谓 不允许再被更改,指的是:不能改变常量所指向的内存地址,可以改变这块内存空间里的数据,
通俗的讲,就是声明一个对象,可以对 对象内部的字段进行重新赋值,但是要将对象重新赋值成一个空对象,这样是不允许的(会报错)
数组的解构(Destructuring)
从数组或对象中获取指定元素的一种快捷方式
示例:
// 比如有一个数组,要分别取数组中对应的值,以前的方法是通过下标的形式分别来取
const arr = [1,2,3]
const a = arr[0]
const b = arr[1]
const c = arr[2]
console.log(a,b,c)
// 而用解构来取的话,就是把原来写定义变量名的地方,换成数组的大括号,括号里面就是要提取出来的数据所存放的变量名,这样就会根据顺序来分配所对应的数据
const arr = [1,2,3]
const [a,b,c] = arr
console.log(a,b,c)
// 如果只想获取其中的某个数据,比如获取第三个数据,这时就可以把前两个变量名删掉,但是要保留所对应的 ',',要确保解构的格式与数组的格式是所对应的
const arr = [1,2,3]
const [,,c] = arr
console.log(c)
// 也可以在解构位置的变量名前添加三个'.',表示提取从当前位置开始往后的所有数据(不包括当前位置的数据),那最后的结果会放到一个数组当中
const arr = [1,2,3]
const [a, ...all] = arr
console.log(all)
// 如果要给变量设置默认值,只需要在变量名后加=就可以
const [a = '1',b = '2',c = '3'] = arr
console.log(a,b,c)