ES6入门(一)

ES6入门(一)

建议大家去读一下阮一峰的es6教程,写的非常的全面,只有在实际的项目中使用过,才能深入的了解es6的属性,下面我只对一些属性做简要的概括,如果有什么不足请大家多多指正,一起学习,共同进步!

1、let和const

let和const相比于var来说,具有块级作用域,只会在作用域内有效

为什么需要块级作用域?

ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。
第一种场景,内层变量可能会覆盖外层变量。
第二种场景,用来计数的循环变量泄露为全局变量。

var具有变量提升现象
即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。

let:

ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

同时let声明的变量不具有变量提升。

let声明变量时不可以重复声明。

const:

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

需要注意的是const声明的变量只声明不赋值会报错。

2、解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

let [a, b, c] = [1, 2, 3];

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子。

如果解构不成功,例如由于等号两边的模式不同,变量的值为undefined;如果只能匹配到一部分数据,则会解构成功一部分即为不完全解构;如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。

解构不仅可以应用于数组,也可以用于对象

对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

let { foo: foo, bar: bar } = { foo: “aaa”, bar: “bbb” };
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

变量的解构赋值用途很多,交换变量的值;从函数返回多个值;函数参数的定义;提取JSON数据;函数参数的默认值;遍历Map结构,详细的大家可以深入去了解一下

3、Symbol:

ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
在这里插入图片描述
上面代码中,变量s就是一个独一无二的值。typeof运算符的结果,表明变量s是Symbol数据类型,而不是字符串之类的其他类型。

注意,Symbol函数前不能使用new命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象。也就是说,由于Symbol值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。

实际在平时的工作中用到的比较少,建议大家了解一下就可以。
本篇文章就先复习到这里,希望大家努力学习,提升自己的技术吆,觉得还可以记得点赞吆

猜你喜欢

转载自blog.csdn.net/forget_fly/article/details/113886986
今日推荐