ECMAScript新特新

1.兼容性

当低版本IE浏览器不支持ES6语法是需要引用browser.js

2.ES6新特性介绍

序号ES6ES7
1块级作用域变量声明关键字let和constArray.prototype.includes:新增了 includes 方法,用于判断数组中是否包含指定的元素。返回布尔值,表示是否包含。
2箭头函数指数操作符(Exponentiation Operator):引入了双星号(**)作为指数操作符,用于计算一个数的幂。
3默认参数值await/async:ES7 引入了 async/await 关键字,用于更方便地编写基于 Promise 的异步代码。async 关键字用于声明一个异步函数,await 关键字用于暂停异步函数的执行,等待 Promise 对象的解析结果。
4模板字符串Object.entries/Object.values:新增了 Object.entries 和 Object.values 方法。Object.entries 返回一个给定对象自身可枚举属性的键值对数组,Object.values 返回一个给定对象自身可枚举属性的值数组。
5解构赋值其他语法改进:ES7 还引入了一些语法改进,如:函数参数支持尾部逗号(Trailing Commas),允许在函数参数和调用时的对象字面量最后一个属性后面添加逗号。
6Rest/Spread操作符(…展开语法)
7对象属性简写
8类和继承
9Promise异步编程
10Symbol类型
11迭代器与生成器
12数组新API:forEach、map、filter、find、reduce等

3.变量

var:
1、同一变量可以重复声明
2、无法限制修改
3、没有块级作用域

let:
1、不能重复声明
2、变量-允许修改
3、块级作用域

const:
1、不能重复声明
2、常量-不允许修改
3、块级作用域

4.函数

箭头函数

//传统函数语法示例:
function 名字(){
}
//箭头函数语法示例:
()=>{
}
//传统写法
let show =function(a){return a+1;
}
//箭头函数写法
let show=(a)=>{return a+1;
}
//如果只有一个参数,()可以省,如果只有一个return,{}可以省
let show=a=>a+1;
//多个参数示例
let show =function(a,b){return a+b;
}
let show=(a,b)=>{return a+b;
}
let show=(a,b)=>a+b;

5.展开语法

5.1.函数参数

5.1.1.收集参数

//注意:扩展参数args必须是最后一个参数
function show(a, b, ...args){
alert(a);
alert(b);
alert(args);
}
show(12,15,20,11);

5.1.2.展开数组

let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr3 = [...arr1,...arr2];
alert(arr3);

5.2.默认参数

//如果c没传就3
function show(a, b=5,c=3){
console.info(a,b,c);
}
show(12,1);

6.解构赋值

1、左右两边结构必须一样
2、右边必须是个东西
3、生命和赋值不能分开,必须在一句话里完成

let [a,b,c] = [1,2,3];
console.info(1,2,3);let {a,b,c} = {a:1,b:2,c:3};
console.info(1,2,3);let [{a,b},[n1,n2,n3],num,str] =  [{a:12,b:5},[1,2,3],8,’test’];
console.log(a,b,n1,n2,n3,num,str);let [json,arr,num,str] =  [{a:12,b:5},[1,2,3],8,’test’];
console.log(json,arr,num,str);

7.数组

7.1.map:

映射–》一个对一个,进去5个出来也是5个
参数说明:
currentValue:当前元素的值。
index:当前元素的索引。
array:原始数组。

let arr = [11,92,32,80];//成绩清单,大于等于60为及格,否则不及格
let arr1 = arr.map(arg1=>arg1>=60?’及格’:’不及格’);
console.log(arr1);

7.2.reduce:

汇总–>一堆返回一个
参数说明:
accumulator:上一个值。
currentValue:当前元素的值。
index:当前元素的索引。
array:原始数组。

let arr = [11,92,32,80];//平均分
let sum = arr.reduce((arg1,arg2,arg3)=>{return arg1+arg2;
});
console.log(sum /arr .length);

7.3.filter:

过滤器
参数说明:
currentValue:当前元素的值。
index:当前元素的索引。
array:原始数组。

let arr = [11,92,32,80];//成绩清单,大于等于60为返回,其他的过滤
let arr1 = arr.filter(arg1=>arg1>=60);
console.log(arr1);

7.4.forEach:

循环(迭代)
参数说明:
currentValue:当前元素的值。
index:当前元素的索引。
array:原始数组。

8.字符串

1、多了两个新方法
startsWith
endsWith
2、字符串模板

//反单引号 `  键盘1左边按键
let arg1 = "【arg1】";
let arg2 = `字符串模板测试,${arg1},字符串模板测试`;
console.log(arg2);

9.面向对象

1、class关键字、构造器和类分开了
2、class里面直接加方法
ES6对象写法

//es6之前定义对象
function Dict(label,code){this.label=label;this.code = code;
}
Dict.prototype.showLabel = function(){alert(this.label);
}
Dict.prototype.showCode = function(){alert(this.code);
}
let d1 = new Dict('汉族','01');
d1.showLabel();
d1.showCode();//es6定义对象
class User{//构造方法constructor(username,password) {this.username = username;this.password = password;}showUsername(){alert(this.username);}showPassword(){alert(this.password);}
}
let u1 = new User('admin','123456');
u1.showUsername();
u1.showPassword();//es6继承对象
class VipUser extends User{	constructor(username,password,sex){super(username,password);this.sex = sex;}showSex(){alert(this.sex);}
}
let u2 = new VipUser('admin','123456',23);
u2.showUsername();
u2.showPassword();
u2.showSex();

10.面向对象应用

React:
1.组件化-class
2.JSX:jsxbabelbrowser.js

11.JSON

1、JSON对象
JSON.stringify
JSON.parse
2、JSON简写
名字和对象一样时可以简写

let a=12;
let b=11;
//a和b简写
let json = {a,b,c:"1"};
console.info(json);

方法简写
1、名字跟值(key和value)一样 可以简写
2、方法简写==》:function删除掉

//方法简写形式
let json = {a:"1",fun1:function(){console.log("fun1");},fun2(){console.log("fun2");}
};
json.fun1();
json.fun2();

12.Promise

Promise==》承诺
异步:操作之间没有关系,同时进行多个操作
优点:性能快
缺点:代码更复杂
同步:同时只能做一件事
优点:代码简单
缺点:性能慢

12.1.Promise.all

语法:

Promise.all(
[$.ajax(),$.ajax()]
).then(
results=>function{成功},
err=>{失败}
);

示例:

<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
let p = new Promise(function(resolve,reject){$.ajax({url:"new_file1.json",dataType:"json",success(data){resolve(data);},error(err){reject(err);}});
});
p.then(function(data){console.info("成功"+data);
},
function(data){console.info("失败");
});function createPromise(url){return new Promise(function(resolve,reject){$.ajax({url,dataType:"text",success(data){resolve(data);},error(err){reject(err);}});});
}
Promise.all([createPromise("new_file1.json"),createPromise("new_file2.json")
]).then(function(resArr){console.log("成功");console.log(resArr);let [res1,res2] = resArr;console.log(res1);console.log(res2);},function(resArr){console.error("失败");console.error(resArr);}
);//新版本jquery中ajax就是一个promise,简写方式
Promise.all([$.ajax({url:"new_file1.json",dataType:"text"}),$.ajax({url:"new_file2.json",dataType:"text"})
]).then(resArr=>{console.log("成功");let [res1,res2] = resArr;console.log(res1);console.log(res2);},resArr=>{console.error("失败");console.error(resArr);}
);

12.2.Promise.race

语法:

Promise.all(
[$.ajax(),$.ajax()]
);

13.generator

generator==>生成、生成器
普通函数==》一路到底
generator函数==》中间能停
语法:
1、*:generator方法声明标识
2、yield:放弃执行==》可以通过yield接收传进来的参数和返回结果
3、next:触发执行==》可以通过next传入参数和接收返回结果
4、执行next后会返回对象,done=true时表示执行结束

function * show(){console.log('show1');yield;console.log('show2');
}
let genObj = show();
genObj.next();
genObj.next();function * show(arg1,arg2){console.log('show1');let show1 = yield 'yield-show1';//show1:yield入参;yield-show1:出参console.log('show2');return 'return-show2'
}
let genObj = show();
let return1 = genObj.next(1,2);//
console.log(return1);
return1 = genObj.next(1,2);//next传入参数,return1返回参数
console.log(return1);

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

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

相关文章

如何开通GitHub Copilot

GitHub Copilot 是由GitHub 和OpenAI共同开发的人工智能代码辅助工具&#xff0c;可以自动地生成高质量代码片段、上下文信息等。 通过自然语言处理和机器学习技术&#xff0c;能够通过分析程序员编写的代码、注释和上下文信息&#xff0c;自动生成代码&#xff0c;减轻程序员的…

基于ssm的法律咨询系统(有报告)。Javaee项目,ssm项目。

演示视频&#xff1a; 基于ssm的法律咨询系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Sp…

代码随想录训练营第三十六天打卡| 435. 无重叠区间 763.划分字母区间 56. 合并区间

435. 无重叠区间 1.模仿射气球那一题的思路&#xff0c;把区间按左边界从小到大排序&#xff0c;遇到重叠区间就删除&#xff0c;同时更新区间右边界&#xff0c;保留最小的那个。当前删除最少的区间&#xff0c;从而全局达到删除区间最少。个人是AC了这道题&#xff0c;但是发…

基于node.js和Vue3的医院挂号就诊住院信息管理系统

摘要&#xff1a; 随着信息技术的快速发展&#xff0c;医院挂号就诊住院信息管理系统的构建变得尤为重要。该系统旨在提供一个高效、便捷的医疗服务平台&#xff0c;以改善患者就医体验和提高医院工作效率。本系统基于Node.js后端技术和Vue3前端框架进行开发&#xff0c;利用其…

Django模型(七)

一、聚合与分组查询 1.1、准备数据 class Cook(models.Model):"""厨师"""name = models.CharField(max_length=32,verbose_name=厨师名)level = models.IntegerField(verbose_name=厨艺等级)age = models.IntegerField(verbose_name=年龄)sect …

图像旋转_题解

【题解提供者】吴立强 解法 思路 设旋转后的图像为 B B B&#xff0c;那么有 A i , j B j , n − i A_{i,j} B_{j,n-i} Ai,j​Bj,n−i​ 成立&#xff0c;故 i , j i,j i,j 互换且 i i i 倒序输出即可。 代码展示 #include <iostream> using namespace std;co…

《二叉树》——3(层序遍历)

目录 前言&#xff1a; 层序遍历: 解析&#xff1a; 前言&#xff1a; 本文主讲链式二叉树的层序遍历&#xff0c;在前面的张篇blog我们初步实现了链式二叉树递归部分的内容&#xff0c;对于递归算法的学习和思维方式我们仍然需要不断加强&#xff0c;所以将对链式二叉树进行…

Python与ArcGIS系列(二十)GDAL之合并shp和geojson要素图层

目录 0 简述1 代码实现2 结果展示0 简述 Shp格式是GIS中非常重要的数据格式,主要在Arcgis中使用,但在进行很多基于网页的空间数据可视化时,通常只接受GeoJSON格式的数据,众所周知JSON是利用键值对+嵌套来表示数据的一种格式,以其轻量、易解析的优点,被广泛使用与各种领域…

Flink与Redis集成:自定义连接器实现维表创建与数据汇入

目录 一、问题引入 二、Redis创建维表 2.1 预期效果展示 2.2 设计要点

python爬虫学习之解析_BeautifulSoup

目录 一、bs4的基本使用 &#xff08;1&#xff09;导入 &#xff08;2&#xff09;创建对象 二、节点定位 1、根据标签名查找节点 2、基本函数使用 &#xff08;1&#xff09;find &#xff08;2&#xff09;find_all &#xff08;3&#xff09;select 三、节点信息 1、获取节…

微搭低代码从入门到精通03用户注册

文章目录 1 搭建数据源2 开发API3 搭建页面4 数据入库5 页面跳转总结 小程序开发中&#xff0c;如果定位是面向内部人员使用的应用&#xff0c;那么我们就需要仔细考虑用户鉴权的问题。首先需要提供用户注册的通道&#xff0c;让用户可以自主完成注册。其次要提供角色分配的功能…

力扣349两个数的交集

题目连接&#xff1a;349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a; nums1 [1,2,2…

Android组件化中的Arouter学习

假设现在有两个业务组件登录和问答模块之间需要进行通信&#xff0c;可能会想到用反射的方式&#xff0c;是可以但是会影响性能&#xff0c;而写的代码比较多类名这些要记清楚。 路由可以看做表&#xff0c;每个map对应一张表 我们可以试着这么写&#xff0c;完成MainActivity跳…

Kerberos 安全认证

什么是Kerberos Kerberos是一种计算机网络授权协议&#xff0c;用来在非安全网络中&#xff0c;对个人通信以安全的手段进行身份认证。密码不在网络上传输&#xff0c;提高安全性。 简写名词 AS&#xff08;Authentication Server&#xff09; 认证服务器KDC&#xff08;Key…

线程的状态和生命周期

前言 在多线程编程中&#xff0c;线程的状态和生命周期是两个非常重要的概念。了解线程的状态和生命周期可以帮助我们更好地理解和编写多线程程序。在本篇博客中&#xff0c;我们将详细介绍线程的状态和生命周期&#xff0c;以及如何在不同的状态之间进行转换。 一、线程的状态…

汉化GAL笔记

Idol Magical Girl Chiru Chiru Michiru 1 2 发布地址&#xff1a;https://tieba.baidu.com/p/8881200756 .hg3文件格式搜索 .int封包 cs2conf.dll文件 确认catsystem2引擎 使用GARbro解包 lneditor解析cst文件失败 使用cstTextProc&#xff1a;初窥Galgame汉化——以Ca…

【原创】VMware创建子网,并使用软路由获得访问互联网的能力,并通过静态路由让上层网络访问位于虚拟机的子网

前言 一看标题就很离谱&#xff0c;确实内容也有点复杂&#xff0c;我的初衷是为后面搞软路由做准备&#xff0c;先通过VMware进行可行性验证&#xff0c;确定方案是否可行&#xff0c;再做下一步的计划。结论当然可以的&#xff0c;能通能访问&#xff0c;强的不行。 网络拓…

SV-7041T 多媒体教学广播IP网络有源音箱

SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。同时它可以外接一个30W的无源副音箱&#xff0c;用在面积较大的场所。5寸进口全频低音喇…

蓝桥杯嵌入式第七届真题(完成) STM32G431

蓝桥杯嵌入式第七届真题(完成) STM32G431 题目 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**********************…

Leetcode 3022. Minimize OR of Remaining Elements Using Operations

Leetcode 3022. Minimize OR of Remaining Elements Using Operations 1. 解题思路2. 代码实现 题目链接&#xff1a;3022. Minimize OR of Remaining Elements Using Operations 1. 解题思路 这道题坦率地说其实不太想写这篇题解&#xff0c;因为其实自己根本没有搞定&…