2022/10/23:
1.1.1 let
特性:1.变量不能重复声明 2.let有块级作用域 3.不存在变量提前 4.不影响作用域链

1.1.2 const 声明常量
特性:1.一定要赋初始值 2.一般常量使用大写 3. 常量的值不能修改 4.也具有块级作用域 5.对于数组和对象的元素修改,不算作对常量的修改

1.2 解构赋值
ES6 允许按照一定模式从数组和对象中提取值,对变量进行赋值,这被称为解构赋值
例:const F4 = ['小沈阳','刘能','赵四','宋小宝']
let [xiao,liu,zhao,song] = F4; (数组的解构)

const zhao = {
name : '赵本山',
age: '不详',
xiaopin: function(){
console.log("我可以演小品")
}
}
let {name,age,xiaopin} = zhao; (对象的解构)

1.3 模板字符串
【` `】ES6 映入新的声明字符串的方式
特性:1.内容中可以直接出现换行符 2.变量拼接${lovest}

1.4 对象的简化写法
ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法,这样的书写更加简洁

1.5 箭头函数
ES6允许使用箭头(=>)定义函数
特性:1.this是静态的,this始终指向函数声明时所在作用域下的this的值
2.不能作为构造实例化对象 3.不能使用arguments变量
4.简写
1.省略小括号,当形参有且只有一个的时候
2.省略花括号,当代码体只有一条语句的时候,此时return也必须省略

1.6 函数参数默认值
1.可以给形参赋初始值,一般位置要靠后
2.与解构赋值结合

1.7 rest参数
ES6引入rest参数,用于获取函数的实参,用来代替arguments
function date(...args){
console.log(args);
}
date('aaa','bbb','ccc');

1.8 扩展运算符
扩展运算符是能将数组转换为逗号分隔的参数序列
数组的合并
const A = ['aa','bb'];
const B = ['cc','dd'];
const C = [...A,...B];
console.log(C) //[aa,bb,cc,dd]
数组的克隆
const A = ['a','b','c'];
const B = [...A];
console.log(B) //[a,b,c]
将伪数组转换为真正的数组
const A = documents.querySelectorAll('div');
const B = [...A];
console.log(B) // [div,div,div]

1.9 Symbol
ES6引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型。
Symbol特点:
1.Symbol的值是唯一的,用来解决命名冲突的问题
2.Symbol值不能与其他数据进行运算
3.Symbol定义的对象属性不能使用for…in循环遍历,但是可以使用4.Reflect.ownKeys来获取对象的所有键名

2022/10/24:
1.10 迭代器
迭代器(lterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署lterator接口,就可以完成遍历操作。
原理:创建一个指针对象,指向数据结构的起始位置,第一次调用==next()==方法,指针自动指向数据结构第一个成员,接下来不断调用next(),指针一直往后移动,直到指向最后一个成员,没调用next()返回一个包含value和done属性的对象
例://声明一个对象
const banji = {
name: "终极一班",
stus: [
'xiaoming',
'xiaoning',
'xiaotian',
'knight'
],
[Symbol.iterator]() {
//索引变量
let index = 0;
//
let _this = this;
return {
next: function () {
if (index < _this.stus.length) {
const result = { value: _this.stus[index], done: false };
//下标自增
index++;
//返回结果
return result;
}else{
return {value: undefined, done: true};
}
}
};
}
}

//遍历这个对象
for (let v of banji) {
console.log(v);
}

2022/10/25:
1.11 生成器
生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同,是一种特殊的函数(用next分开调用)(生成器函数的参数传递)
实例1:用生成器函数的方式解决回调地狱问题
function one(){
setTimeout(()=>{
console.log(111);
iterator.next();
},1000)
以及function two,three格式同上
}{value:'耳朵',done:false} next()执行第一段,并且返回yield后面的值
function * gen(){
yield one();
yield two();
yield three();
}

2022/10/29:
1.12 Promise
Promise是ES6引入的异步编程的新解决方案。语法上 Promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。
const p =new Promise((resolve, reject)=>{ })
p.then(function (value){ 成功则执行第一个回调函数个
console.log(value) ,失败则执行第二个
},function (reason){
console.error(reason)
})
Promise.then()方法:
then()函数返回的实际也是一个Promise对象
1.当回调后,返回的是非Promise类型的属性时,状态为fulfilled,then()函数的返回值为对象的成功值,如reutnr 123,返回的Promise对象值为123,如果没有返回值,是undefined
2.当回调后,返回的是Promise类型的对象时,then()函数的返回值为这个Promise对象的状态值
3.当回调后,如果抛出的异常,则then()函数的返回值状态也是rejected

2022/11/14:
1.13.1 Set
ES6提供了新的数据结构set(集合)
它类似于数组,但成员的值都是唯一的
返回集合的元素个数 X.size 添加新的元素 X.add('a'); 清空:clear()
删除元素:X.delete('a'); 检测:.has检测集合中是否包含某个元素 布尔值

set应用:let arr = [1,2,3,4,5,4,3,2,1]; let arr2 = [4,5,6,5,4];
1.数组去重 let result = [...new Set(arr)]; (此处.filter过滤出布尔值为真的数)
2.交集 let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
3.并集 let result = [new Set([...arr,...arr2])];
4.差集 let result4= [...new Set(arr)].filter(item => !(new
此处"!"为取反 Set(arr2).has(item)))]

1.13.2 Map
ES6提供了Map数据结构。它类似于对象,也是键值对的集合。
“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
let m = new Map(); //获取 console.log(m.get('change'));
m.set('name','ran'); //遍历 for(let v of m){
m.set('change',()=>{ console.log(v);
console.log('改变!') }
})

人生如逆旅,我亦是行人
最后更新于 2023-10-27