ES6初识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hreticent/article/details/87176278

概述

JavaScript发展历史

1、目前用的版本是ECMAScript3.1,后来改了名字叫ECMAScript5

2、ECMAScript6的特点

     ES6增添了许多必要的特性,例如模块和类,块级作用域,常量与变量

3.检测浏览器的支持程度:http://kangax.github.io/compat-table/es6/

4、可以通过Babel转码器把ES6写的代码转成ES5的,就不用担心运行环境是否支持

5、chrome下使用ES6为保证可以正常使用大部分语法,需要使用严格模式,即在js开始部分加上'use strict'

6、目前微软的 edge 浏览器对es6的支持程度较高,在学习时可以在 edge下测试

学习资料文档:http://es6.ruanyifeng.com/#docs/intro

变量声明

let    声明变量的关键字

           1、在相同的作用域内,let不能重复声明一个变量(不同的作用域内除外)

           2、let声明的变量不会被预解析

           3、暂时性死区

             变量在let声明前都不能访问,为了防止先调用后声明这个现象

块级作用域

4、let声明的变量拥有块级作用域,块级作用域批是的是一对大括号就是一个作用域

    块级作用域可以直接写一对大括号,以后就不用写自执行函数了

常量

const       声明一个常量,一旦声明后就不能修改了

         1、如果声明后再去修改的话就会报错

         2、只声明不赋值也会报错

         3、只能先声明后使用,不会被提前解析

         4、不能重复声明一个常量

         注意:const声明的对象中的属性是可以修改的

解构赋值

      按照一定的模式,从数组或者对象中把数据拿出来,对变量进行赋值

数组的解构赋值

       等号左边与右边必需都是数组,数组的解构赋值要一一对应。如果对应不上的话就是undefined

对象的解构赋值

         等号左边与右边必需都是对象,名字要一一对应,顺序不需要对应,对应不上的值结果是undefined

字符串扩展方法

includes(s)       字符串里面是否包含某个字符,参数是一个字符

startsWidth(s)     字符串的开始位置的字符是否是参数的,参数是一个字符

endsWidth(s)      字符串的结束位置的字符是否是参数的,参数是一个字符

以上的几个方法都返回一个布尔值

repeat(num)       复制字符串,参数为数字,表示复制的次数。参数必需是一个正数,其它的就会报错

模板字符串

模板字符串:字符串的拼接方式

          1、字符串需要用一对反引号包起来,它可以定义多行字符串,只用一对反引号

          2、要拼进去的数据需要放在${}里面

          3、大括号里还可以进行运算

          4、大括号里还可以调用函数

数组的扩展方法

Array.from()     把类数组转成真正的数组

       任何有length属性的对象都可以用这个方法转真正数组

[...类数组]       它是一个扩展方法,在这里可以把一个类数组转成一下真正的数组

Array.of()          把一组数值转成真正的数组

includes(数据,起始位置)   查找数组中有没有某个数据

for in   循环,能够直接读取键名

for of      循环,能够直接读取键值

          它不光可以遍历数组或者对象,只要有遍历接口的对象都可以用它

keys()         存储了数组的所有键名

values()      存储了数组的所有键值

entries()     存储了数组的所有键值对

rest参数

rest参数        ...变量名

      rest参数是一个数组,它的后面不能再有参数,不然会报错

      扩展方法  ...

          1、三个点后面是一个类数组,它的作用是把这个类数组转成真正的数组,但是它需要放到一对中括号里面

          2、三个点后面是一个真正的数组,它的作用是把数组转成一个普通的集合数据,不需要加中括号的

箭头函数

语法:

      1、function用var、let、const来表示

      2、参数要写在第一个等号后面

          2.1、如果没有参数,需要写一对空的小括号

          2.2、只有一个参数,那就直接写,不用加括号

          2.3、参数有多个,需要加一个小括号,参数用逗号隔开

      3、函数的主体内容是放在箭头后面,如果语句只有一条,那就直接写。如果语句有多条,需要把它们放在一对大括号里

注意:

      1、函数体内的this对象就是定义函数时所在的对象,不是调用函数时候的对象

      2、不能当作构造函数来用,不能使用new

      3、函数内不能使用arguments对象,如果要用的话就用reset参数来代替

Object.is

Object.is()     比较两个值是否相等,与===的结果一样,但是还是有一些区别

      返回的结果是一个布尔值

区别

      1、+0与-0比较的结果为false

      2、NaN与NaN比较的结果为true

Object.assign

Object.assign()      将一个对象身上的属性复制到另一个对象身上

1、至少需要两个参数

2、第一个参数为合并后的对象

3、从第二个参数开始往后就是所有要合并的对象

4、如果有同名的属性,后面会把前面覆盖了

5、如果有嵌套的对象,是覆盖并不是添加

Symbol

新增的第7种数据类型,表示独一无二。用来做为属性名,能保证不会与其它的属性名冲突

1、它是通过Symbol函数生成的

2、它的前面不能用new,因为它生成的是一个原始类型的数据,不是对象

3、它可以接收一个参数,为了便于区分。即使长得一样它们也不相同

4、它不能与其它的值进行运算,没有隐式转换

5、它的值可以被转换成布尔值或者字符串,不能转成数字

Set数据结构

 Set      数据结构,类似数组。所有的数据都是唯一的,没有重复的值。它本身是一个构造函数

   size         数据的长度

   add()    添加一个数据

   deleate() 删除一个数据

   has()    查找某条数据,返回一个布尔值

   clear()     删除所有数据

Map数据结构

Map     数据结构,类似于对象。键值对的集合。所有的数据都是唯一的,不会重复。每条数据都需要放在一个数组中,它本身就是一个构造函数

      size         数据的长度

      set()     添加一条数据

      delete()      删除一条数据

      get()     获取一条数据

      has()    查找某条数据,返回一个布尔值

      clear()     删除所有数据

猜你喜欢

转载自blog.csdn.net/Hreticent/article/details/87176278
ES6