ES6知识点总结

一、ECMAScript 是什么

ECMAScript是JavaScript的组成部分,JavaScript没了它可是不行的。平时我们写javascript代码的时候,用什么声明一个变量,没错,是用关键字:var,为什么是 var 而不是其他的单词?此外,为什么我们都用function关键字来声明一个函数,而不是用其他单词?为什么呢?因为这是ECMAScript规定了我们要这么做,它规定了javascript的语法规则。

ECMAScript就是JavaScript中的语法规范!它规定了我们javascript的最基础的部分!

ES6就是ECMAScript 6的缩写简称。顾名思义,它是ECMAScript的第6个版本,也就是说它有更早的版本,以后还会有更多版本。

二、es6的变量声明

1、变量的声明关键字


    var
        全局作用域和函数作用域
        会变量提升
    let
        局部作用域
        不会变量提升
        不能重复声明
    const
        值类型不能修改
        声明必须赋值
        一般大写


2、解构


    数组:
        定义:把数组或对象解析为单独的变量
        1、基本格式
var [a,b, ,c="default",...rest] = arr
        2.逗号代表下一位
        3、 ...rest剩余的所有(只能放在最后)
        4、 可以有默认值
        5、交换变量
[a,b] = [b,a]

        6、...+数组      把数组展开,把数组解构为单独的变量
    对象:
        var {name,age,say="love you"} = obj
        对象解构没有顺序

        

三、es6中的字符串方法


    1、字符串模板


`${js变量}`
可以换行,还可以加特殊符号

 


   2、遍历


for of

 


    3、检测

返回布尔值(true/false)
includes(sub)是否包含sub
startsWith(sub)以开头sub
endsWidth(sub)以结尾sub


   4、 重复


repeat(n)字符串重复n次


   5、 填充


“22”.padStart(4,"0")-->"0022"
.padEnd(填充几位,填充字符串)

四、es6中数组方法

        1、遍历 forEach

arr.forEach(function(item,index,self){})
item 当前遍历的元素
index 当前元素的下标
self 当前数组


   2、映射 map

arr.map(function(item,index,self){
    返回一个,映射数组
})


  3、过滤  filter

arr.filter(function(item,index,self){
    返回真,当前元素遍历元素保留
    返回假,当前变量的元素过滤掉
})


4、累计  reduce

arr.reduce(function(a,b){
    a是上一次返回的结果
})


  5、有一个  some

有一个返回结果为true最终结果为true


   6、每一个 every

每一个返回结果为true最终结果为true


   7、 find() 查找符合条件的元素


   8、 findIndex() 查找符合条件的元素下标


  9、排序  

 sort((a,b)=>a-b) 从小到大

sort((a,b)=>b-a) 从大到小

 

五、箭头函数


    01 箭头函数可以省略function
    02 =>左边是参数
    03 =>右边是函数体、返回值
    04 参数0个或二个以上 参数要加上括号
    05 如果函数体有多行需要加上{} 如果需要返回值 加上return
    06 如果返回的是一个对象则用() 包裹对象  ({})
    07 箭头函数中的this指向上一层作用域的this

六、函数

1、默认参数


    function fn(a=10,b=20){}


2、调用:拓展参


    fn(...arr)


3、定义:不订参


    function (...args){}

七、对象

1.对象简写


    变量和值的简写
    函数function简写
var name = "n";
var age = 20;
var obj = {
    name,age,say(){alert(this.name)}
}


2.对象动态属性


    { [nick+"msg"]:"你好" }

 

八、类

1、面向对象基本特点:封装;继承;多态;接口
2、单词:
extends 继承
constructor 构造函数
super 超类
static 静态
3、定义类
    class Person{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
    say(){
        alert("你好")
    }
}
4、实例化类
    var p1 = new Person()
5、类中的this
    Person类中的this指向、当前类的实例(p1)
6、继承
    class Teach extends Person {
    constructor(name,age,major){

        // super 调用父元素的 constructor方法,放在最前面
        super();
        this.major = major;
    }    
}

九、模板

1、导入
    import{name,fun,Square} from '.api.js'
    import Square from '.api.js'
    import Sq from '.api.js'
    别名as,*代表所有
    import * api from './api.js'
    api.name; api.fun()
    别名
    import Square,{name,fun as fn} from './api.js'
2、导出
    export{name,fun,Square}
导出多次
    export default Square;
默认只能导出一次

十、Set

定义:没有重复元素的集合(数组)
初始化:
        var s1 = new Set()
        var s2 = new Set([1,2,5])
添加:
        s1.add()
删除:
        s1.delete()
清空:
        s1.clear()
检测:
        s1.has()
长度:
        s1.size
转数组:
        Array.from(s1)
        [...s1]
数组去除
    arr1 = [...new Set(arr)]


版权声明:本文为weixin_51221133原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。