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);
  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值