ES6~11学习笔记

it2023-07-24  71

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

最新回复(0)