前端框架学习-ES6新特性(尚硅谷web笔记)

ECMASript是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。javaScript也是该规范的一种实现。

新特性目录

        • 笔记出处:b站
        • ES6
          • let 关键字
          • const关键字
          • 变量的解构赋值
          • 模板字符串
          • 简化对象写法
          • 箭头函数
          • rest参数
          • spread扩展运算符
          • Promise
          • 模块化
        • ES8
          • async 和 await
        • ES9
          • Rest/Spread属性

笔记出处:b站

尚硅谷Web前端ES6教程,涵盖ES6-ES11
阮一峰大佬的:ECMAScript 6 入门

ES6

let 关键字

使用let关键字声明变量的特点:

  1. 不允许重复声
  2. 块儿级别作用域
  3. 不存在变量提升
  4. 不影响作用域链
const关键字

const关键字用来声明常量,const声明由以下特点

  1. 声明必须赋初始值
  2. 标识符一般为大写
  3. 不允许重复声明
  4. 值不允许修改
  5. 块儿级作用域
变量的解构赋值

ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值

	 //数组的解构赋值const arr = ['张学友', '刘德华', '黎明', '郭富城'];let [zhang, liu, li, guo] = arr;//对象的解构赋值const lin = {name: '林志颖',tags: ['车手', '歌手', '小旋风', '演员']};let {name, tags} = lin;
模板字符串

模板字符串(template string)是增强版的字符串,用反引号(`)标识,特点:

  1. 字符串中可以出现换行符
  2. 可以使用 ${xxx} 形式输出变量
	// 定义字符串let str = `<ul><li>沈腾</li><li>玛丽</li><li>魏翔</li><li>艾伦</li></ul>`;// 变量拼接let star = '王宁';let result = `${star}在前几年离开了开心麻花`;
简化对象写法

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

let name = '尚硅谷';
let slogon = '永远追求行业更高标准';
let improve = function () {console.log('可以提高你的技能');
}
//属性和方法简写
let atguigu = {name,// 属性名和变量名相同可以简写slogon,// 属性名和变量名相同可以简写improve,// 属性名和函数变量名相同可以简写change() {// change:function(){}的简写方式console.log('可以改变你')}
};
箭头函数

ES6 允许使用「箭头」(=>)定义函数。

// 1. 通用写法
let fn = (arg1, arg2, arg3) => {return arg1 + arg2 + arg3;
}
// 2. 省略小括号的情况,只有一个参数
let fn2 = num => {return num * 10;
};
// 3. 省略花括号,省略花括号的同时要省略`return`
let fn3 = score => score * 20;
// 4. this指向2声明所在作用域中this的值
let fn4 = () => {console.log(this);//Windows
}
let school = {name: '尚硅谷',getName(){let fn5 = () => {console.log(this);// this指向school}fn5();}
};

箭头函数不会更改 this 指向,用来指定回调函数会非常合适

rest参数

ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments

// 类似java中的可变参数
function add(...args){console.log(args);
}
add(1,2,3,4,5);
// rest参数必须是最后一个形参,在其他参数都确定之后才是rest参数
function minus(a,b,...args){console.log(a,b,args);
}
minus(100,1,2,3,4,5,19);
spread扩展运算符

扩展运算符(spread)也是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。在ES9之后也可对对象进行扩展

// 展开数组
let tfboys = ['德玛西亚之力','德玛西亚之翼','德玛西亚皇子'];
function fn(){console.log(arguments);// 输出不是数组对象而是,'德玛西亚之力', '德玛西亚之翼', '德玛西亚皇子'
}
fn(...tfboys)
// 展开对象
/**
* 展开对象
*/
let skillOne = { q: '致命打击',};
let skillTwo = { w: '勇气'};
let skillThree = { e: '审判'};
let skillFour = { r: '德玛西亚正义'};
let gailun = {...skillOne, ...skillTwo,...skillThree,...skillFour};
Promise

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

	//实例化 Promise 对象const p = new Promise(function(resolve, reject){resolve(data);// 成功时使用这个方法reject(err);// 失败时使用这个方法});//调用 promise 对象的 then 方法p.then(function(value){// then后面的第一个函数是成功的回调,第二个函数是失败时的回调console.log(value);}, function(reason){console.error(reason);})// 程序发生错误的时候调用p.catch(function(reason){console.warn(reason);});
模块化

模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。
好处:

  1. 防止命名冲突
  2. 提高代码复用
  3. 增强维护性,出问题只需要调整对应模块即可

模块化功能主要由两个命令构成:

  • export 命令用于规定模块的对外接口
  • import 命令用于输入其它模块提供的功能
// 在m1.js中导出// 分别暴露export let school = '尚硅谷';export function teach() {console.log("我们可以教给你开发技能");}// 统一暴露export {school, teach};// 默认暴露export default {school: 'ATGUIGU',change: function(){console.log("我们可以改变你!!");}}
// 在app.js中使用import {school, teach} from "./src/js/m1.js";// 针对默认暴露可以这样写import m1 from "./src/js/m1.js";

ES8

async 和 await

async 和await 目的是为了简化promise中api的使用,两种语法结合可以让异步代码和同步代码一样。
解决回调地狱问题

async函数

async 函数的返回值为 promise 对象
promise 对象的结果由 async 函数执行的返回值决定

await 函数

  1. await 必须写在 async 函数中
  2. await 右侧的表达式一般为 promise 对象
  3. await 返回的是 promise 成功的值
  4. await 的 promise 失败了, 就会抛出异常, 需要通过 try…catch 捕获处理
async function main() {try {let result = await p;console.log(result);} catch (e) {console.log(e);}}

ES9

Rest/Spread属性

Rest 参数与 spread 扩展运算符在 ES6 中已经引入,不过 ES6 中只针对于数组,
在 ES9 中为对象提供了像数组一样的 rest 参数和扩展运算符

function connect({host, port, ...user}) {console.log(host);console.log(port);console.log(user);// 可以直接将后三个参数封装到user中
}
connect({host: '127.0.0.1',port: 3306,username: 'root',password: 'root',type: 'master'
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/42742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生周刊:Kubernetes v1.28 新特性一览 | 2023.8.14

推荐一个 GitHub 仓库&#xff1a;Fast-Kubernetes。 Fast-Kubernetes 是一个涵盖了 Kubernetes 的实验室&#xff08;LABs&#xff09;的仓库。它提供了关于 Kubernetes 的各种主题和组件的详细内容&#xff0c;包括 Kubectl、Pod、Deployment、Service、ConfigMap、Volume、…

CF1013B And 题解

题目传送门 题目意思&#xff1a; 给你一个长度为 n n n 的序列 a i a_i ai​&#xff0c;再给一个数 x x x。每一步你可以将序列中的一个数与上 x x x。请问最少要多少步才可以使得序列中出现两个相同的数&#xff0c;如果无解输出 − 1 -1 −1。 思路&#xff1a; 首…

Vue页面刷新常用的4种方法

Vue项目里,有时候我们需要刷新页面,重新加载页面数据,常用方法如下: 方法一:location.reload() 方法全局刷新 使用 location.reload() 方法可以简单地实现当前页面的刷新,这个方法会重新加载当前页面,类似于用户点击浏览器的刷新按钮。 在 Vue 中,可以将该方法绑定到…

题解 | #M.Fair Equation# 2023牛客暑期多校10

M.Fair Equation 签到题 题目大意 给定一个式子 A B C ABC ABC &#xff0c;其中正整数 A , B , C ≤ 1 0 6 A,B,C\le 10^6 A,B,C≤106 问能否在 A , B , C A,B,C A,B,C 其中一个数的某一位置&#xff08;可以是开头和结尾&#xff09;插入一个数字&#xff0c;使得等式…

Elasticsearch 查询之Function Score Query

前言 ES 的主查询评分模式分为两种&#xff0c;是信息检索领域的重要算法&#xff1a; TF-IDF 算法 和 BM25 算法。 Elasticsearch 从版本 5.0 开始引入了 BM25 算法作为默认的文档评分&#xff08;relevance scoring&#xff09;算法。在此之前&#xff0c;Elasticsearch 使…

sip网络号角喇叭 sip音柱 POE供电广播音箱 ip网络防水对讲终端 sip网络功放

SV-7042TP网络号角喇叭 一、描述 SV-7042TP是我司的一款SIP网络号角喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。SV-7042TP作为SIP系统的播放终端&#xff0c;可…

【脚踢数据结构】常见树总结(图码结和版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的…

如何构造不包含字母和数字的webshell

利用不含字母与数字进行绕过 1.异或进行绕过 2.取反进行绕过 3.利用php语法绕过 利用不含字母与数字进行绕过 基本代码运行思路理解 <?php echo "A"^""; ?> 运行结果为! 我们可以看到&#xff0c;输出的结果是字符"!"。之所以会…

C++:字符串哈希

字符串哈希 给定一个长度为 n n n的字符串&#xff0c;再给定 m m m个询问&#xff0c;每个询问包含四个整数 l 1 , r 1 , l 2 , r 2 l_1,r_1,l_2,r_2 l1​,r1​,l2​,r2​&#xff0c;请你判断 [ l 1 , r 1 ] [l_1,r_1] [l1​,r1​]和 [ l 2 , r 2 ] [l_2,r_2] [l2​,r2​]这…

“深入理解Java虚拟机(JVM):背后的工作原理解析“

标题&#xff1a;深入理解Java虚拟机&#xff08;JVM&#xff09;&#xff1a;背后的工作原理解析 摘要&#xff1a;本文将深入探讨Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;包括内存管理、垃圾回收、即时编译器等关键概念&#xff0c;以及如何优化代码以…

React 18 更新 state 中的数组

参考文章 更新 state 中的数组 数组是另外一种可以存储在 state 中的 JavaScript 对象&#xff0c;它虽然是可变的&#xff0c;但是却应该被视为不可变。同对象一样&#xff0c;当想要更新存储于 state 中的数组时&#xff0c;需要创建一个新的数组&#xff08;或者创建一份已…

vue2,使用element中的Upload 上传文件,自定义上传http-request上传,上传附件支持多选,多个文件只发送一次请求

复制直接使用&#xff0c;组件根据multiple是否多选来返回附件内容&#xff0c;支持多选就返回数据附件&#xff0c;则返回一个附件对象。 //uploadFiles.vue<template><div><el-uploadclass"avatar-uploader"action"#":accept"accep…

对比 VPN 与远程桌面软件,为什么远程桌面更优越

数字格局不断演变&#xff0c;我们的工作和连接方式也在不断变化。企业纷纷转向远程运营&#xff0c;有关推进向远程过渡的最佳技术的争论从未停止。争论的焦点通常是虚拟专用网络&#xff08;VPN&#xff09;和远程桌面软件。 长期以来&#xff0c;VPN 一直被用作访问公司网络…

Linux上,出现依赖无法下载时,如何解决?

1.vim 编辑 /etc/profile 文件&#xff1a; vim /etc/hosts删除/etc/hosts文件中已有的内容&#xff0c;添加如下内容&#xff0c; 140.82.112.3 github.com&#xff1a;wq保存退出&#xff1b; 2.使配置生效 systemctl restart network然后&#xff0c;就可以愉快&#x1…

【C++】函数指针

2023年8月18日&#xff0c;周五上午 今天在B站看Qt教学视频的时候遇到了 目录 语法和typedef或using结合我的总结 语法 返回类型 (*指针变量名)(参数列表)以下是一些示例来说明如何声明不同类型的函数指针&#xff1a; 声明一个不接受任何参数且返回void的函数指针&#xf…

【Flink】Flink窗口触发器

数据进入到窗口的时候,窗口是否触发后续的计算由窗口触发器决定,每种类型的窗口都有对应的窗口触发机制。WindowAssigner 默认的 Trigger通常可解决大多数的情况。我们通常使用方式如下,调用trigger()方法把我们想执行触发器传递进去: SingleOutputStreamOperator<Produ…

kubernetes--技术文档--基本概念--《10分钟快速了解》

官网主页&#xff1a; Kubernetes 什么是k8s Kubernetes 也称为 K8s&#xff0c;是用于自动部署、扩缩和管理容器化应用程序的开源系统。 它将组成应用程序的容器组合成逻辑单元&#xff0c;以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验&#xff0c…

《一个操作系统的实现》windows用vm安装CentOS——从bochs环境搭建到第一个demo跑通

vm安装CentOS虚拟机带有桌面的版本。su输入密码123456。更新yum -y update 。一般已经安装好后面这2个工具&#xff1a;yum install -y net-tools wget。看下ip地址ifconfig&#xff0c;然后本地终端连接ssh root192.168.249.132输入密码即可&#xff0c;主要是为了复制网址方便…

Netty+springboot开发即时通讯系统笔记(四)终

实时性 1.线程池多线程&#xff0c;把消息同步给其他端和对方用户&#xff0c;其中数据持久化往往是最浪费时间的操作&#xff0c;可以使用mq异步存储&#xff0c;因为其他业务不需要拿着整条数据&#xff0c;只需要这条数据的id进行操作。 2。消息校验前置&#xff0c;放在t…

Vim的插件管理器之Vundle

1、安装Vundle插件管理器 Vim可以安装插件&#xff0c;但是需要手动安装比较麻烦&#xff0c;Vim本身没有提供插件管理器&#xff0c;所以会有很多的第三方的插件管理器&#xff0c;有一个vim的插件叫做 “vim-easymotion”&#xff0c;在它的github的安装说明里有列出对于不同…