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

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni