ES6——再不学就晚了

2024-01-16 22:08
文章标签 frontend es6 不学

本文主要是介绍ES6——再不学就晚了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、异步与等待
    • 1、关键字async
    • 2、await
  • 二、Symbol
  • 三、迭代器
  • 四、生成器
  • 五、代理prxoy
      • 数据的双向绑定
  • 思维导图
  • 总结


前言

昨天发布文章后,已是深夜,加上一些工作,脑袋里已经是一团浆糊,今天回顾文章,发现少了一些内容,现在就补充上。抱歉!!

ES6基础链接: http://t.csdn.cn/5fafx.
ES6进阶链接 :http://t.csdn.cn/76sGP.


一、异步与等待

1、关键字async

语法

async function name([param[, param[, … param]]]) { statements }

  • name: 函数名称。
  • param: 要传递给函数的参数的名称。
  • statements: 函数体语句。

返回值

async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。

代码如下:

 // 用asyc 装饰函数 返回的是promise对象async function say(){return "你好ES6"}say().then(res=>console.log(res))

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。

2、await

语法

[return_value] = await expression;

  • expression: 一个 Promise 对象或者任何要等待的值。

返回值

返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。
如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。

注意

await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。

代码如下:

// awiat 只能在aync函数里面function say(msg,time){return new Promise((resolve,reject)=>{setTimeout(()=>resolve(msg),time)})}// 2秒后说你好// 3秒后说我很中意你// 定义async函数async function doit(){// await会等待say函数执行完才会向下执行var s1 = await say("你好",2000);console.log(s1);var s2 = await say("我很中意你",5000);console.log(s2);return s1+s2;}doit().then(res=>console.log(res))

二、Symbol

概述
ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

ES6 数据类型除了 Number 、 String 、 Boolean 、 Object、 null 和 undefined ,还新增了 Symbol 。
用法

由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。

代码如下:

 // 唯一的,不可变的var sym = Symbol("内容");console.log(sym,typeof sym);var obj= {sym:"abc"};

三、迭代器

作用

可迭代对象都拥有迭代器(可以被for of 遍历对象都是可迭代对象) String Array Set Map

代码如下:

//获取迭代对象
var itr = arr[Symbol.iterator]()
//通过next方法进行迭代
itr.next(){value:"xxx",done:false}
.....
{value:undefined,done:true}
var arr = [2,6,8];
// 获取数组的迭代器
var iter = arr[Symbol.iterator]();
// iter.next(); //{value: 6, done: false}
// ...
// iter.next();//{value: undefined, done: true}

四、生成器

概述
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

代码如下:

function *gen(){// 当生成器函数语言的yield 函数就会暂停,返回值yield "小赵";yield "小今";yield "小麦";}// 执行完毕生成的是迭代器var list = gen();// list.next();// 可以通过next方法获取yield返回的值和状态// 遍历迭代器for(let v of list){console.log(v)

案例
代码如下:

// 写一个生成器,range 参数start= 1,end=100;// 创建一个出一可以迭代start 到end数function *range(start,end,step){while(start<end){yield start;start+=step;}}var list = range(2,101,2);// var arr = Array.from(list);var arr = [...list];console.log(arr)// range 产生由start到end的一个可以迭代对象for(var v of list){console.log(v);}

五、代理prxoy

代码如下:

// 代理就是对原有对象target 二次加工var obj = {"name":"mumu",age:18};// 用o来代理objvar o = new Proxy(obj,{// 当获取o对象的属性值执行get方法get:function(target,prop){// 如果属性名在原对象里面if(prop in target){// 返回原对象属性return target[prop]						}else{// 否则返回 "我檫return "属性名错了";}},set:function(target,prop,value){if(prop==="age"){if(value>200||value<0){// 发送一个(范围)错误throw RangeError('这个年龄恐怕不是人类!')}else{target[prop] = value;}}else{target[prop] = value;}}})	 // 通过o代理obj 实现对 obj对象的劫持

数据的双向绑定

HTML代码如下:

<input type="text" id="inp">
<p id="myp"></p>

JS代码如下:

// 获取两个节点var inp = document.getElementById("inp");var myp = document.getElementById("myp");// 定义对象objvar obj = {msg: "我喜欢Vue"};// 使用代理劫持objvar o = new Proxy(obj, {// get劫持get(target, prop) {return target[prop]},// 设置值 o.msg = "abc" 会触发set// target obj对象 ;prop msg  ;value "abc";set(target, prop, value) {// 只要被设置 value会输出// console.log(value);if(prop==="msg"){// 更新myp.innerText = value;inp.value = value;}target[prop] = value;}})// 设置节点的值或者文本inp.value = o.msg;myp.innerText = o.msg;// 目标:当input发生变化时候,p的内容也要跟随变化// 给inp表单添加input事件修改o.msg的值inp.oninput = function(){o.msg = inp.value}

思维导图

在这里插入图片描述


总结

以上就是 ES6 最常用的一些语法。如果有错误望指正,以后将持续更新。
  • 创作不易,深夜肝文,如果对大家有帮助,还请大家支持一波~
  • 点赞,关注,收藏走一波,感激不尽!
  • 好人一生平安,一胎生八个

这篇关于ES6——再不学就晚了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614046

相关文章

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F