es6快速入门,第一课

一、ECMAScript6简介

1.ES6是什么

ES6是JavaScript的最新版本

JavaScript包含:
    ECMAScript   JavaScript的语法部分   ES3-ES5
    BOM
    DOM
    
常见面试题:
ES和js的关系:
ES是JavaScript的标准;JavaScript是ES的实现。

ES6是2015年发布的新一版本的JavaScript,又称为:ES2015

2.ES的版本问题

2015年   ES2015   ES6  划时代的版本
2016     ES2016   ES7
2017     ES2017   ES8
2018     ES2018  ...
...
2021     ES2021

3.ES6与ES5之间的关系

ES6是ES5 的语法糖。ES6的所有功能,使用ES5都可以实现,但是使用ES6更加简单、简介、标准化.

4.ES6和ES5有哪些差异

新增:

  • 类 class

  • 继承

  • ...运算符

  • 解构

改变:

  • 变量

  • 函数

  • 数组

  • 字符串

  • 对象

5.总结

学了ES6,就忘了ES5

二、变量的扩展:let和const

2.1 let

let 是ES6中新增一个用来定义变量的关键字

let和var的区别:

  • var有变量提升 let没有变量提升(先声明,再使用)

  • var 允许变量重复定义 let不允许变量重复定义

  • var 定义的变量属于函数作用域、let定义的变量属于块作用域

  • let定义的变量有暂时性死区,var没有

            //暂时性死区
            function show(){
                console.log(a);//暂时性死区
                //....
                let a=10;
                // console.log(a);
            }
    ​
            show();
  • var定义的变量会变成顶级对象(window)的属性,let不会

应用:let和for循环

   let lis = document.querySelectorAll('ul li');
        for (let i = 0; i < lis.length; i++) {
            lis[i].onclick = function () {
                alert(i);
            }
        }

解析(了解)

 //上面代码可以拆分为如下:
        //系统每一次都会产生一个新的变量,来保存上一次变量的值,并且赋值给下一次的循环
​
        {
            let i = 0;
            // let temp;
            {
                lis[0].onclick = function () {
                    alert(i)
                }
                // i++;
                temp = ++i;
            }
​
            {
                // let i = 1;
                i = temp;
                lis[1].onclick = function () {
                    alert(i)
                }
                temp = ++i;
            }
​
            {
                // let i = 2;
                i = temp;
                lis[2].onclick = function () {
                    alert(i)
                }
                temp = ++i;
            }
​
            {
                let i = temp;
                lis[3].onclick = function () {
                    alert(i)
                }
                temp = ++i;
            }
        }

2.2 const

const使用来定义常量。

let所拥有的的特点,const都有。

const特点:

  • 不允许被重新赋值

  • 常量必须在定义的时候,就初始化(赋值)

  • 建议:const定义的常量的名称,一般为大写

用途:

用于定义项目中的公共内容、变量

三、字符串的扩展

ES6中新增了通过反引号来定义字符串

特点:

  • 支持换行

  • 支持使用${}在字符串中插入变量

``

示例:

        let arr = [
            { id: 1, name: "李逵", age: 30 },
            { id: 2, name: "李四", age: 40 },
            { id: 3, name: "李鬼", age: 50 },
            { id: 4, name: "李某", age: 20 },
        ];
        //将数据展示到页面中
        let s = '';
        arr.forEach(function (item) {
            // console.log(item);
            s += ` <li><span>${item.id}</span>---- <span>${item.name}</span> --- <span>${item.age}</span></li>`
        });
​
        document.querySelector('ul').innerHTML = s;

四、变量解构赋值

在 ES6中允许按照一定的模式来解析数组、对象,赋值给变量,这种解析模式称为:解构赋值。

解构的诀窍:

  • 保证=两边的模式一致 [],{}

  • 将=右边的内容解析赋值左边的变量

4.1 数组的解构

数组特点:有序的哈希结构

        let arr = [1, 2, 3];//模式一致
        let [a, b, c] = arr;//按顺序解构
​
        // console.log(a, b, c);

分析:数组是一种有序的结构,在解析数据的时候,按照顺序来解析和赋值(一一对应的关系)

数组的常见解构:

  • 完全解构

  • 不完全解构

  • 解构失败

  • 解构变量默认值

  • 解构的缺省

      //1.完全解构(变量的个数与数据个数一致)
        // let [a, b] = [10, 20];
​
        // console.log(a, b);
​
        //2.不完全解构(变量的个数少于数据的个数)
        // let [a] = [10, 20];
        // console.log(a);
​
        //3.解构失败(变量的个数多于数据的个数)
        let [a, b, c] = [10, 20]
        console.log(a, b, c);
​
        //4.解构的默认值
        let [a=0, b=0, c = 0] = [10, 20];//c默认值为0
        // let [a, b, c = 0] = [10, 20,30]
        console.log(a, b, c);
​
        //5.解构的缺省
        let [, , , b] = [10, 20, 30, 40];

4.2 对象解构

4.3 解构和函数

数组示例:

  // function show(a,b){
        //     console.log(a+b);
        // }
​
​
        // function show1(arr){
        // //    let s= arr.reduce(function(a,b){
        // //         return a+=b;
        // //     },0)
        // //     console.log(s);
        // }
​
        // function show1([a = 0, b = 0]) {
        //     // let [a, b] = arr;
        //     console.log(a + b);
        // }
​
        // show1([10])
        // show1([10, 20])
        // show1([])
        // show1();//错误做法  保证=两边的模式一致
​
        // // [a,b]=[10,20]
        // [a,b]=undefined;//error

拓展知识

数组的迭代方法:

  • forEach(callbackfn)

    • 参数说明:callbackfn 回调函数;该回调函数最多可以接收三个参数,分别是:value,index,arr

    示例:

            arr.forEach(function (value) {//推荐
                console.log(value);
                return;
            })

    注意:forEach不能被return打断

  • some(callbackfn) 遍历数组,判断数组中是否有元素满足条件;有一个满足,返回true,都不满足,返回false

    • 参数:回调函数;该回调函数最多可以接收三个参数,分别是:value,index,arr

    示例:

            var arr = [10, 201, 301, 1000];
            var rst = arr.some(function (v) {//v 数组中的每个元素
                return v > 200;
            });
  • every() 遍历数组,判断数组中是否每一个元素都满足条件;满足返回true;有一个不满足则返回false

    示例:

            var rst=arr.every(function(value){
                return value>200;
            })
  • map() 遍历数组;返回的结果会组成一个新的数组返回

示例:

     //4.4  map 遍历数组,为每一个元素都进行操作之后,返回由新元素组成的数组
        // var arr = [10, 20, 30, 900];
        // var arr0=arr.map(function(v){
        //     return v+10;
        // })
        // console.log(arr0);
  • filter() 遍历数组;将数组中满足过滤条件的元素返回,组成新数组

    示例:

            var arr = [10, 20, 30, 40, 100, 99];
            var arrx = arr.filter(function (v, i) {
                // console.log(v,i);
                return v > 60;//条件
            });
    ​
            console.log(arrx);
  • arr.reduce(callbackfn,initvalue) 返回累加结果

    • 参数说明:callbackfn 回调函数 initvalue 回调函数第一个参数的初始值

      • 用法一:initvalue没有赋值,

        • 回调函数第一次执行的时候,第一个参数的值为数组的第一个元素,第二个参数的值为数组的第二个元素

        • 非第一次遍历,则回调函数的第一个参数为上一次累加的结果,第二个参数为当遍历的元素

              // var arr=[11,22,55,200,300];
              // //累加器
              // var sum=arr.reduce(function (a, b) {
              //     // console.log(a, b);
              //     // return a+b;
              //     return a*b;
              // });

      • 用法二:initvalue有初始值

        • 遍历时,回调函数的第一个参数为默认值,第二个参数为当前遍历的元素;依次类推

                let arr = [
                    { id: 1, name: "李逵", age: 30 },
                    { id: 2, name: "李四", age: 40 },
                    { id: 3, name: "李鬼", age: 50 },
                    { id: 4, name: "李某", age: 20 },
                ];
        ​
                let s = arr.reduce(function (s, item) {
                    return s += ` <li><span>${item.id}</span>---- <span>${item.name}</span> --- <span>${item.age}</span></li>`
                }, '')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值