ES6~11学习笔记

let关键字

  • 不能重复声明(防止变量被污染)
  • 块级作用域
  • 不会变量提升
  • 不影响作用域链

const关键字

  • 必须赋初值
  • 一般常量大写
  • 常量值不可修改
  • 块级作用域
  • const定义数组或对象时,内部属性可修改

解构赋值

模板字符串(反引号)

  • 内容中可直接换行
  • 变量拼接(使用“”${变量}“)

简化对象写法

let a = "aString";
        let func = function() {
            console.log(this);
        }

        //es5写法
        const obj = {
            a = a,
            func = func,
            func1 = function() {
                console.log(this);
            }

        }

        //es6写法
        const obj1 = {
            a,
            func,
            func1() {
                console.log(this)
            }
        }

箭头函数

  • 声明方式
  let func = (a, b, c) => {
            console.log(a, b, c);
        }

        //当形参只有一个时可省略小括号,当语句只有一条时可省略大括号
        let func1 = a => console.log(a);
  • this是静态的,始终指向函数声明时的作用域下的this
  • 箭头函数不能作为构造函数创建实例化对象
  • 不能使用arguments保存实参
  • 简写:当形参只有一个时可省略小括号,当函数体只有一条语句时可省略大括号,此时必须省略return,执行结果即作为函数返回值
  • 适用场景:与this无关的回调,如定时器、数组的方法回调;
  • 不适用的场景:与this有关的回调,如dom事件回调,对象方法等。

es6允许给函数形参赋初始值

  • 可与解构赋值相结合

rest参数

es6引入rest参数,用于获取函数的实参,用来代替arguments

  • rest参数必须在形参中写明,方式:三个点加名称func(a,b,c,...other)
  • 与arguments的区别:arguments无需显式声明;args是伪数组(本质是对象),rest是数组,可使用数组的所有api

扩展运算符号

作用:将数组转换为逗号分隔的参数序列

symbol数据类型

迭代器

在这里插入图片描述

  • 应用:使用迭代器自定义遍历数据

生成器

生成器是es6提供的一种异步编程解决方案,本质是一个特殊的函数
声明方式

function * gen(){
}
//生成器的声明方式与普通函数的区别在于function和函数名之间多了一个星号

执行方式

		function* gen() {
            console.log(111);
            yield '第一次';
            //yield后可跟表达式或字面量
            console.log(222);
            yield '第二次';
            console.log(333);
            yield '第三' + '次';
            console.log(444);
        }
        let gen1 = gen();
        gen1.next();
        gen1.next();
        gen1.next();
        gen1.next();

Promise

实例代码

//基本用法
 <script>
        let p = new Promise(function(resolve, reject) {
            setTimeout(() => {
                let data = "seccessfully."
                    // resolve(data);
                let err = "failed"
                reject(err);
            }, 1000);
        })
        p.then(function(value) {
            console.log(value);
        }, function(reason) {
            console.log(reason);
        })
    </script>
//promise封装ajax请求
 <script>
        const p = new Promise(function(resolve, reject) {
            const address = 'https://api.a888piopen.top/getJoke'
            const xhr = new XMLHttpRequest();
            xhr.open("GET", address);
            xhr.send();
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4) {
                    if (xhr.status >= 200 && xhr.status <= 300) {
                        resolve(xhr.response)
                    } else {
                        reject(xhr.status)
                    }
                }
            }
        })
        p.then(function(value) {
            console.log(value);

        }, function(reason) {
            // console.error(reason);
            console.log("cuole!")
        })
    </script>
//promise封装读取文件
	const fs = require('fs');
let p = new Promise(function(resolve, reject) {
    fs.readFile('./some.md', (err, data) => {
        if (err) reject(err);
        resolve(data)

    })
})

p.then(function(value) {
    console.log(value.toString());
}, function(reason) {
    console.log(reason);
})

promise的then()方法详解

then()方法的返回结果也是一个promise对象,对象的状态(promise的promiseState属性值)由回调函数的执行结果决定:如果回调函数中返回的结果是 非promise类型的数据类型,对象状态为成功,返回值(promise的promiseResult属性值)即为成功函数的返回值;如果回调函数中返回的结果是promise对象实例,则该promise对象实例的返回结果即为外层promise对象的返回值

class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值