ES6基础总结(下)

ES6基础 1、每个js文件都是一个独立的模块2、导入其他模块成员使用import关键字3、向外共享模块成员使用export关键字基于node.js体验ES6模块化v14.15.1更高版本的node.js在package.json根节点中添加"type":"module"节点。 阅读详情

ES6基础总结(下)

1.生成器

生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同
生成器其实就是一个特殊的函数
可用来进行异步编程
常见的异步编程:文件操作、网络操作(ajax,request)、数据库操作

function * gen(){
    console.log('222');
}
//调用生成器函数
let interator=gen();
interator.next();//222

生成器函数可以出现 yield 语句
yield 可以当作为函数代码的分隔符,可以将函数代码切分成几块

function * gen(){
    //yield 后面可以跟一个表达式 或者一个字面量
    console.log('zz');
    yield '111';
    console.log('xx');
    yield '222';
    console.log('cc');
}
//调用生成器函数
//调用结果类似迭代器
let interator=gen();
interator.next();//zz
interator.next();//xx
interator.next();//cc

可以利用for of 遍历

function * gen(){
    console.log('zz');
    yield '111';
    console.log('xx');
    yield '222';
    console.log('cc');
}
for(let v of gen()){
    console.log(v);
}

在这里插入图片描述

1.1生成器的函数参数
function * fn(arg){
    console.log(arg);
    let one=yield 111;
    console.log(one);
    yield 222;
    yield 333;
}
let interator=fn('AAA');
console.log(interator.next());
//输出
//AA
//{value:111,done:false}
//next 方法可以传入实参 该实参就是 yield 整个语句的返回结果
console.log(interator.next('BBB'));
//输出
//BBB
//{value:222,done:false}
1.2生成器函数实例

实例一:1s 后控制台输出 111 2s 后出书 222 3s 后输出 333

        function one(){
            setTimeout(() => {
                console.log(111);
                interator.next();
            }, 1000);
        }
        function two(){
            setTimeout(() => {
                console.log(222);
                interator.next();
            }, 2000);
        }
        function three(){
            setTimeout(() => {
                console.log(333);
                interator.next();
            }, 3000);
        }
        function * fn(){
            yield one();
            yield two();
            yield three();
        }
        let interator=fn();
        interator.next();

案例二:模拟获取 用户数据 ===> 订单数据 ===> 商品数据

        function getUsers(){
            setTimeout(() => {
                let data='用户数据'; 
                interator.next(data);
            }, 1000);
        }
        function getOrders(){
            setTimeout(() => {
                let data='订单数据';
                interator.next(data);
            }, 1000);
        }
        function getGoods(){
            setTimeout(() => {
                let data='商品数据';
                interator.next(data);
            }, 1000);
        }
        function * fn(){
            let users=yield getUsers();
            console.log(users);
            let orders=yield getOrders();
            console.log(orders);
            let goosds=yield getGoods();
            console.log(goods);
        }
        let interator=fn();
        interator.next();

2.Promise

Promise 是 ES6 引入的异步编程的新解决方案。语法上Promise 是一个构造函数,用来封装异步操作并可以获取其成功或者失败的结果
(1)Promise 构造函数: Promise{excutor}{}

        //实例化Promise对象
        //对象内部的函数形参潜规则为 resolve reject 
        //实际上都可以
        //实例化的对象 p 有三种状态:初始化 成功 失败
        const p=new Promise(function (resolve,reject) {
            //封装异步操作
            setTimeout(()=>{
                // let data='数据库用户数据'
                // //resolve
                // resolve(data);
                //如果说数据读取失败
                let err='数据读取失败';
                reject(err);
            },1000)
        });
        //成功后 调用 Promise 的 then() 方法
        //then() 方法 接收两个参数 都是函数类型的值
        // 成功:value 失败:resaon
        //如果上述异步任务成功则调用第一个回调 否则调用第二个
        p.then(value=>{
            console.log(value);
        },reason=>{
            console.log(reason);
        })

(2)Promise.prototype.then方法
(3)Promise.prototype.catch方法

3.Set集合

集合:表示无重复值的有序列表
ES6 提供了新的数据解构 Set(集合),他类似于数组,但成员的值都是唯一的,对于重复的值能够直接过滤掉,集合实现了iterator 接口,所以可以使用扩展运算符和 for…of 进行遍历
集合的属性和方法:
size:返回集合的元素个数
add:增加一个新元素,返回当前集合
delete:删除元素,返回boolean值
has:检测集合中是否包含某个元素,返回boolean值
语法:let 集合名=new Set();

let set=new Set();
console.log(set,typeof set);//Set(0){object}

size返回集合元素个数

let set=new Set(['11','22','33']);
console.log(set.size);//3

add添加元素

let set=new Set();
set.add(2);
set.add('4');
set.add('4');
console.log(set);//Set(2) 重复的数据将会直接忽略

delete删除元素

let set=new Set();
set.add(2);
set.add('4');
set.add([1,2,3]);
set.delete(2);
console.log(set);//Set(2){'4',Array(3)}

校验数值是否在集合中 has() 方法

let set=new Set();
set.add(2);
set.add('4');
set.add([1,2,3]);
console.log(set.has(2)); //true

访问集合的长度 size

let set=new Set();
set.add(2);
set.add('4');
set.add([1,2,3]);
console.log(set.size); //3

将set转换成数组

let set1=new Set([1,2,3,4,5,5,5,6]);
//利用扩展运算符
let arr=[...set1];
console.log(arr);
3.1 Set实践

案例一:数组去重

let arr=[1,2,3,4,5,5,6,6,7,8];
let result=[...new Set(arr)];
console.log(result);

案例二:交集

let arr=[1,2,3,4,5,5,6,6,7,8];
let arr1=[7,8,9,10];
// let result=[...new Set(arr)].filter(item=>{
//     let arr2=new Set(arr1);
//     if(arr2.has(item)){
//         return true;
//     }else{
//         return false;
//     }
// });
let result=[...new Set(arr)].filter(item=>new Set(arr1).has(item));

案例三:并集

let arr=[1,2,3,4,5,5,6,6,7,8];
let arr1=[7,8,9,10];
let union=[...new Set([...arr,...arr1])];
console.log(unoin);

4.Map数据类型

ES6提供了Map数据结构。他类似与对象,也是键值对的集合。但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当左键。Map也实现了iterator接口,所以可以使用扩展运算符和for…of进行遍历。
Map的属性和方法:
(1)size 返回Map的元素个数
(2)set 增加一个新元素,返回当前Map
(3)get 返回键名对象的键值
(4)has 检测Map中是否包含某个元素,返回boolean值
(5)clear 清空集合,返回undefined
声明 Map

let map=new Map();

添加元素
键名与键值可以是任意数据元素

let map=new Map();
map.set('name','zz');
map.set('change',()=>{
    console.log('111');
});
console.log(map);//Map(1){"name"=>"zz","change"=>f}

size获取元素个数

let map=new Map();
map.set('name','zz');
console.log(map.size);//1

delete删除元素

let map=new Map();
map.set('name','zz');
map.set('age','22');
map.delete('name');
console.log(map);//"age"=>"22"

get获取元素

let map=new Map();
let key={
    school:'ZZGS'
};
map.set(key,['11','22','33']);
console.log(map.get(key));//(3) ['11', '22', '33']

5.Class 类

ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板,通过class类关键字可以定义类,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法。

class Phone{
    //构造方法 内容不能修改
    constructor(brand,price){
        this.brand=brand;
        this.price=price;
    }
    //创建call()方法 必须遵守该格式,不能按照ES5的写法来进行
    call(){
        console.log('111');
    }
}
//实例化
const phone=new Phone('Iphone','49999');
console.log(phone)
JavaScript高级——ES6基础入门 前言ES6(ECMAScript 6),也被称为ES2015,是JavaScript的第六个版本.它于2015年发布,并在现代JavaScript开发中扮演了重要的角色.学习方法:看千遍,不如自己动手写一遍遇到问题不要怕,微笑着面对它记笔记let 和 constconst和let是在ES6中引入的两个新的变量声明关键字,用于声明变量的作用域。const:const用于声明一个常量,其值在声明后不能被修改。常量必须在声明时进行初始化,而且不能再次赋值。 阅读详情

相关推荐

Elasticsearch 7.6 - Springboot应用基础操作篇

上文已经说了基础的API操作,那么在java中要如何实现呢?本文就是在Springboot框架下实现索引、映射、一系列查询(高亮、精准、聚合、分词、排序、分页)、批量操作等

共勉 2243

ES6常用单容易被忽略的方法

1.has (1)has方法用来拦截HasProperty操作(注意不是HasOwnProperty,即has方法不判断一个属性是对象自身的属性,还是继承的属性。),即判断对象是否具有某个属性时,这个方法会生效。典型的操作就是in运算符。可以接受两个参数,分别是目标对象、需查询的属性名。 (2)用于隐藏某些属性 // 隐藏_开头的属性 var handler = { has (target, key) { if (key[0] === '_') { return false;

weixin_40542544的博客 708

cryptlib:用ES6编写的Node中使用AES加密字符串的模块

隐秘库 一个模块,用于在Node中加密/解密字符串,该模块编写为ES6(src文件夹),并使用Babel转换为ES5(dist文件夹)。 使用配套框架库,您应该能够在节点,iOS,Android和Windows平台之间进行加密/解密。 随同的库可以在这里找到: 安装 npm install cryptlib --save 用法 加密 var cryptLib = require ( 'cryptlib' ) , iv = cryptLib . generateRandomIV ( 16 ) , //16 bytes = 128 bit key = cryptLib . getHashSha256 ( 'my secret key' , 32 ) , //32 bytes = 256 bits encryptedText = cryptLib . encryp

jses6

es6-11新特性,持续更新中...

baidu_41927649的博客 786

HDLbits找茬实战:5个Verilog仿真Bug修复案例,新手避坑指南

本文通过HDLbits平台上的5个典型Verilog仿真Bug案例,详细解析了多路选择器位宽不匹配、模块实例化端口映射错误等常见问题,提供实用的修复方案和调试技巧,帮助Verilog新手快速掌握代码验证与仿真技能,避免常见陷阱。

weixin_42653691的博客 162

基于 Wi-Fi 的室内定位系统

目前,随着国内外相关从业人员的研究,研究者们提出了众多室内定位技术的理论与方法。在此仅讨论基于 Wi-Fi 的室内定位技术。 WI-FI室内定位 近年来Wi-Fi技术飞速发展,城市中的公共场所如大型超市商场、学校、企业等都已经广泛部署Wi-Fi。Wi-Fi室内定位技术已经出现了很多具有代表性的研究成果,如RADAR系统、Nibble系统、Weyes系统等室内定位系统。2012年,Google把Wi...

温染的笔记 9567

关于ES6

解构赋值是对赋值运算符的扩展。他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。

Roseanne_Park0的博客 225

SNAP实战:Sentinel-1 GRD数据从预处理到后向散射系数生成全流程解析

本文详细解析了Sentinel-1 GRD数据从预处理到后向散射系数生成的全流程,包括辐射定标、噪声处理、地形校正等关键步骤。通过SNAP软件实战操作,帮助用户掌握SAR影像处理技巧,提升数据质量与分析效率,适用于地表变化监测、灾害评估等应用场景。

weixin_29239661的博客 536

ES6 学习总结5

一、set集合 ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。 set集合的属性和方法: size 返回集合的元素个数; add 增加一个新元素,返回当前集合; delete 删除元素,返回 boolean 值; has 检测集合中是否包含某个元素,返回 boolean 值; clear 清空集合,返回 undefined; <!DOCTYPE html>

qq_63479468的博客 359

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2844

ES6语法扩展(剩余参数与扩展运算符、set和map、遍历器、es6新增方法)

ES6 新特性之语法扩展,包含剩余参数和扩展运算符、set和map、for...of方法、以及ES6新增的字符串方法、数组方法、对象方法等内容

ailsa_csdn的博客 1858

ximalaya 新xm-sign逆向思路

本文主要介绍目标网站新xm-sign值的逆向思路。仅代表个人理解,如有其他建议可在评论区沟通。声明仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除。

weixin_66580433的博客 2017

ES6基础入门

ES6基础入门ES6简介ES6基础编程let命令let命令存在块级作用域Let不存在变量提升Let暂时性死区const 命令字符串的扩展-模板字符串函数的扩展rest参数函数的扩展-箭头函数箭头函数的语法使用箭头函数的注意点this指向问题使用箭头函数简化回调函数rest参数与箭头函数结合 ES6简介 1、ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。 2、它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程

『愚』的博客 7755

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。

数据知道的博客 1万+

基于Simulink的发动机管理系统中的自适应增压控制系统设计

通过上述详细设计步骤,我们成功开发了一个基于Simulink的自适应增压控制系统。该系统不仅能够实时监测和预测发动机的运行状态,动态调整增压压力目标值,还具备实时监控、故障诊断和保护功能,确保系统的安全性和可靠性。此外,通过仿真实验和硬件在环测试,我们验证了系统的性能,并对其进行了优化,使其能够更好地满足实际应用需求。这个项目展示了如何利用MATLAB/Simulink的强大功能,结合控制理论和工程实践,开发出高效、可靠的自适应增压控制系统。

MHD0815的博客 220

【前端知识】es6基础语法介绍

概述1. 变量声明:let 和 const2. 模板字符串3. 解构赋值4. 箭头函数5. 默认参数值6. 类(Classes)7. 模块8. 扩展运算符(Spread Operator)9. 对象字面量增强10. 符号(Symbols)11. 迭代器(Iterators)和生成器(Generators)12. 承诺(Promises)基本数据类型1. 字符串(String)2. 数字(Number)3. 布尔值(Boolean)4. 未定义(Undefined)5. 空值(Null)

wendao76的专栏 2200

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

es6基础

es6教程: 目录 es6教程: 1 ES5扩展内容: 1 es6语法: 3 因为vue和react很多底层都是es6实现的所以学习react和vue之前有必要学习一下es6。 Es5是09年发布的es6是15年发布的之后几乎每一年发布一个版本的es,但是由于时间间隔比较短,很多功能不一定能够实现,但是es6基本已经实现了甚至现在的es8都有很多实现了。 ES5扩展内容: Es5严格模式: 减少浏览器的怪异行为,和js设计的一些不合理之处为未来的js做好铺垫。 使用use strict 严格模式的约束: 必

weixin_44708911的博客 366

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ES6基础内容

head></head><body><script>name:'1班',stus:['张三','李四','王五'],//索引变量return{done:false//下标自增index++;//返回结果return res;

2401_82398807的博客 1161

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ES6基础语法与模块化编程

介绍ECMAScript6基础语法

匿名攻城狮 727

Es6开发环境及基础语法

文章目录Es6开发环境及基础语法Nodejs安装开发基础语法注释常量和变量标识符声明数据类型字符串转义字符字符串操作方法数值型number常量属性数字的方法内置数学对象math运算符算数运算符挑战题比较运算符逻辑运算符位运算三元运算符逗号操作符其他运算符优先级表达式 Es6开发环境及基础语法 Nodejs Nodejs 是服务器端运行的JavaScript的开源,跨平台运行环境,原始作者瑞安·达...

鑫仔之行 1109

ES6语法基础总结

此篇文章为ES6简单的语法基础个人总结,有利于精简代码,高效开发。

王红珠的博客 272

ES6基础知识点

ES6入门学习笔记

zysp158的博客 345
上一篇: ES6基础总结(上)
下一篇: Vue2.0-指令与过滤器(上)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值