一、什么是ES6

ES6是说明新的JavaScript标准

二、变量声明

1、var

(1)var 定义的变量存在变量提升

(2)var定义的变量不存在块级作用域

(3)var可以重复声明变量

2、let

(1)let与var基本一致,用作变量声明

(2)let在一堆大括号{}中形成局部作用域

(3)let声明的变量只在作用域内起作用

(4)let不能在同一个作用域内重复声明

(5)let存在暂时性死区:只要块级作用域内存在let命令,它所声明的变量就“绑定”在这个区域,不再受外部的影响

3、const

(1)与let一致(局部作用域,不存在变量声明提升,不能重复声明)

(2)const声明变量时必须赋值

(3)const定义的变量,不能修改(即值得类型)

(4)建议,在声明变量时,变量名大写

三、数组和对象的解构

1、数组的解构

// 把数组解析为单个的变量
// 可以逗号跳过某个元素
    let arr = [1, 2, 3, 4, 5];
    let [a, , b, ...c] = arr;
    console.log(a);
    console.log(b);
    console.log(c);

// 可以给默认值
// 通过...接收剩余内容(不定参)
    let arr2 = [1, 2, 3, 4];
    let [d, e, f, g = 22] = arr2;
    console.log(d, e, f, g);

// 可以交换变量
    var i = 100;
    var j = 50;
    [i, j] = [j, i];
    console.log(i, j);

2、对象的解构

// 把对象解析为单独的变量
// 不用按顺序解构
    let obj = { name: "aaa", age: 12, job: "教师" };
    let { age, name, job } = obj;
    console.log(age);
    console.log(name);
    console.log(job);

四、箭头函数

1、箭头函数:函数的简写

var fun = function () {
        alert("love");
    }
    var fun1 = () => alert("love");
    // =>左侧是参数
    // =>右侧是执行语句也是返回值
    fun();
    fun1();

2、如果不是一个则需要添加()

var fun2 = (name, age) => alert("大家好,我是" + name + ",今年" + age + "岁");                         
    
    fun2("xxx", 23);

3、如果有多行语句用{}

var fun3 = item => {
        if (item > 18) {
            alert("可以参军");
        } else {
            alert("小屁孩一个");
        }
    }
    fun3(19);

4、如果需要返回对象用({})

var fun4 = (name, age) => ({
        name: name,
        age: age,
        msg: "大家好我是" + name
    })
    var obj = fun4("小小怪", 17);
    console.log(obj);

5、箭头函数中this的指向问题

箭头函数的this指向的是上一层函数调用者,不能作为构造函数

var age = 50;
    var obj = {
        age: 18,
        grow: () => {//此处不为箭头函数,是function普通函数时需要注意,情况就不一样了
            setInterval(() => {//此处同上,会有一些小陷阱,需要注意
                this.age++;
                console.log(this.age);
            }, 3000)
        }
    }
    // obj.grow();
    var arr = [2, 4, 6, 7, 8,];
    var arr1 = arr.filter(item => item > 5);
    console.log(arr1);

    var total = arr.reduce((a, b) => a + b);
    console.log(total);

    var arr2 = arr.map(item => item * 10);
    console.log(arr2);

五、ES6新增的字符串方法

1、遍历:forEach

var arr1 = ["小红", "小蓝", "小子", "小黑"];
    arr1.forEach(function (item, index, self) {
        console.log(item, index, self);
    })

2、查找:includes、startsWith、endsWith

var str = "假如把范得起的错,能错的都错过,应该还来得及去悔过";
    //includes:查找是否包含
    alert(str.includes("错"));
    //查找是否已XXX开头
    alert(str.startsWith("假如"));
    //查找是否已XXX结尾
    alert(str.endsWith("过"));

    //查找存在返回true,否则返回false

3、补齐:padStart(len,symbol)、padEnd(len,symbol)

len:需要补齐的长度

symbol:用什么补齐

var a = "1";
    console.log(a.padStart(3, "0"));//输出结果001
    console.log(a.padEnd(4, "0"));//输出结果10000

4、去空白trim、trimLeft、trimRight

var b = "   132   ";
    console.log(b);
    //去除两侧空白
    console.log(b.trim());
    //去除左侧空白
    console.log(b.trimLeft());
    //去除右侧空白
    console.log(b.trimRight());

es6 数组中的对象是否有某个值 es6数组语法_es6

 六、数组新增方法

 1、排序:sort

arr1 = [1, 12, 15, 33, 7, 9]
    arr1.sort((a, b) => a - b);//a-b升序,b-a降序
    console.log(arr1);
    //运行结果[1,7,9,12,15,33]

2、查找:find、findIndex

find:查找符合条件的元素

findIndex:查找符合条件的元素的下标

var arr = [2, 4, 6, 8];
    var el = arr.find(function (item) {
        if (item > 5) {
            return true;
        }
    })

    var el2 = arr.find(item => item > 5);
    console.log(el);
    console.log(el2);

    var index = arr.findIndex(function (item) {
        if (item > 5) {
            return true;
        }
    })
    console.log(index);

3、过滤:filter

var arr2 = arr.filter(function (item) {
        return item % 2 == 0;
    })
    console.log(arr2, arr);

4、遍历:forEach

var arr1 = ["小红", "小蓝", "小子", "小黑"];
    arr1.forEach(function (item, index, self) {
        console.log(item, index, self);
    })
    //item:当前遍历的元素
    //index:当前元素得到下标
    //self:被遍历的数组

5、映射:map

//通过数组arr得到数据ages
    var arr = [
        {
            name: "小明",
            age: 16,
            sex: "男"
        },
        {
            name: "小红",
            age: 17,
            sex: "女"
        },
        {
            name: "小白",
            age: 18,
            sex: "女"
        }
    ]
    var ages = arr.map(item => item.age)
    console.log(ages);

6、累计:reduce

reduce(function (a, b) {
        return a + b
    })
    // a:上一次返回的结果
    // b:当前遍历的元素

7、some和every

some:都不符合条件返回false,有一个满足返回true,且剩下不再进行检测,返回值为布尔值

every:检测数组所有元素是否满足指定条件,所有元素都满足返回true,一个不满足返回false,且剩下元素不再进行检测,返回值为布尔值

//数组是否有一个大于16岁,是否所有小于60岁
    var computers = [
        { name: "Apple", age: 8 },
        { name: "IBM", age: 12 },
        { name: "Acer", age: 32 },
    ]

    var big = computers.map(item => item.age);
    var a = big.some(item => item > 16);
    if (a) {
        alert("有一个大于16岁");
    }
    var b = big.every(item => item < 60);
    if (a) {
        alert("所有都小于60岁");
    }