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

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

CSS @media print 使用详解

《CSS@mediaprint使用详解》:本文主要介绍了CSS中的打印媒体查询@mediaprint包括基本语法、常见使用场景和代码示例,如隐藏非必要元素、调整字体和颜色、处理链接的URL显示、分页控制、调整边距和背景等,还提供了测试方法和关键注意事项,并分享了进阶技巧,详细内容请阅读本文,希望能对你有所帮助...

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分