ES6--let,解构赋值,promise && ES7--async
ES-->IE10、Google、火狐
ES6
let
- 声明的关键字
- 不能重复声明
- 块级作用域
<input type="button" value="1">
<input type="button" value="2">
<input type="button" value="3">
window.onload = function() {
let abt = document.getElementsByTagName('input');
for (var i = 0; i < abt.length; i++) {
abt[i].onclick = function() {
alert(i);
}
}
}
// 因为var作用域是函数,所以三个按钮点击弹出都是3
window.onload = function() {
let abt = document.getElementsByTagName('input');
for (var i = 0; i < abt.length; i++) {
(function(i) {
abt[i].onclick = function() {
alert(i);
}
})(i)
}
}
window.onload = function() {
let abt = document.getElementsByTagName('input');
for (let i = 0; i < abt.length; i++) {
abt[i].onclick = function() {
alert(i);
}
}
}
// let作用域是块,可以避免这个问题
箭头函数 ()=>{}
- 一个参数()可以省略:val =>{}
- 只有return,{}可以省略
函数的参数
参数扩展/展开
接收参数,...args必须放在最后;可以用于参数个数不确定
function show(a,b,...args){
alert(a) //12
alert(b) //15
alert(args) //8,9,10
}
show(12,15,8,9,10)
展开数组
...arr 等同于直接把arr放在这里,也就是所谓的链接
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = [...arr1,...arr2]; //[1,2,3,4,5,6]
默认参数
- 没传值的情况下,用自己设置的默认参数
function show(a,b=10,c=15){
console.log(a,b,c)
}
show(5) //5,10,15
shpw(1,2,3) //1,2,3
解构赋值
- 左右两边结构一模一样
- 右边必须是个合格对象
let [json,arr,num,str]=[{a:1,b:2},[3,4,5],8,'abc'];
consle.log(json,arr,num,str)
数组
映射 map
obj.map(function(item){
console.log(item)
})
汇总 reduce
tem 是指一个中间值,初始为0,item为两个数的和,index为从1开始执行的次数
let arr = [12,69,180,8763];
let result=function(tem,item,index){
return tem+item
}
过滤 filter
保留一部分,抛弃一部分
let arr=[1,2,3,4,5]
let result=arr.filter(item=>item%3==0)
迭代 forEach
let arr=[12,5,8,9];
arr.forEach(item=>alert(item))
字符串
startsWith
endsWith
字符串模板:反单引号
let a='一个';
let b='好人';
let str = `我是${a}${b}`; //我是一个好人
面向对象
- class 构造函数
- 继承
JSON
- JSON.stringify obj转json
- JSON.parse json转obj
promise
操作之间没关系,同时进行多个操作
消除异步操作,同步一样的方式,写异步
all会将所有请求异步完成,接受参数是arr,返回的也是arr
function ajax(url){
return new promise(function(resolve,reject){
$.axax({
url:url,
dataType:'json',
success:function(data){
resolve()
},
error:function(err){
reject(err)
}
})
})
}
promise.all([
ajax(url1),
ajax(url2)
]).then(
arr => {
let data = arr[0];
let result = arr[1];
},
err => alert('失败')
)
catch 解决一个接口返回作为另一个接口参数的问题
// 创建一个Promise实例,获取数据。并把数据传递给处理函数resolve和reject。
// 需要注意的是Promise在声明的时候就执行了。
var getUserInfo=new Promise(function(resolve,reject){
$.ajax({
type:"get",
url:"index.aspx",
success:function(data){
if(data.Status=="1"){
resolve(data.ResultJson)//在异步操作成功时调用
}else{
reject(data.ErrMsg);//在异步操作失败时调用
}
}
});
}) //另一个ajax Promise对象,
var getDataList=new Promise(function(resolve,reject){
$.ajax({
type:"get",
url:"index.aspx",
success:function(data){
if(data.Status=="1"){
resolve(data.ResultJson)//在异步操作成功时调用
}else{
reject(data.ErrMsg);//在异步操作失败时调用
}
}
});
}) //Promise的方法then,catch方法
getUserInfo.then(function(ResultJson){
//通过拿到的数据渲染页面
}).catch(function(ErrMsg){
//获取数据失败时的处理逻辑
}) //Promise的all方法,等数组中的所有promise对象都完成执行
Promise.all([getUserInfo,getDataList]).then(function([ResultJson1,ResultJson2]){
//这里写等这两个ajax都成功返回数据才执行的业务逻辑
})
generator
- yield配合用
- 控制代码执行程度,走走停停
ES7
数组
includes 查看arr是否包含值,返回true/false
[a,b,c,d].includes('b'12) // true
[a,b,c,d].includes('b',2) // false
[1,NaN,2,3].includes(NaN) // true
[1,NaN,2,3].indexOf(NaN) // -1
keys/values/entries
- for ... of 循环的是值--key
2.for ... in 循环的是下标--index
3.enries 所有键值对拿出来 {a:1}
幂运算
- ** = 快捷运算
- Math.pow(3,3) = 27
async
- 用法
let readData = async () => {
let data1 = await $.ajax({url,param});
let data2 = await $.ajax({url,param});
let data3 = await $.ajax({url,param});
console.log(data1,data2,data3)
}
readData()
await等的是一个promise
await要和promise搭配使用
ES6--let,解构赋值,promise && ES7--async的更多相关文章
- ES6 的解构赋值前每次都创建一个对象吗?会加重 GC 的负担吗?
本文来源于知乎上的一个提问. 为了程序的易读性,我们会使用 ES6 的解构赋值: function f({a,b}){} f({a:1,b:2}); 这个例子的函数调用中,会真的产生一个对象吗?如果会 ...
- ES6之解构赋值
截止到ES6,共有6种声明变量的方法,分别是var .function以及新增的let.const.import和class: 我们通常的赋值方法是: var foo='foo'; function ...
- 进军es6(2)---解构赋值
本该两周之前就该总结的,但最近一直在忙校招实习的事,耽误了很久.目前依然在等待阿里HR面后的结果中...但愿好事多磨!在阿里的某轮面试中面试官问到了es6的掌握情况,说明es6真的是大势所趋,我们更需 ...
- es6的解构赋值学习(1)
相对es5的简单的"="赋值来说,es6增加了一种新的赋值模式--解构赋值,按照它的规则,可以从数组和对象中提取值来对变量进行赋值,个人觉得方便了很多,但是这个模式有点恶心人,相比 ...
- Es6 新增解构赋值
1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 要想实现解构,就必须是容器,或者具有可遍历的接口. 以前,为 ...
- es6的解构赋值用途
(1)交换变量的值 let x = 1; let y = 2; [x, y] = [y, x]; 上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰. (2)从函数返回多个值 函数 ...
- ES6 之 解构赋值
本博文配合 阮一峰 <ES6 标准入门(第3版)>一书进行简要概述 ES6 中变量的解构赋值. 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这 ...
- ES6变量解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构ES6之前我们申明多个变量需要按照下面的方法: let l a=1; let b=2; let c=3; let d=4; ...
- es6变量解构赋值的用途
这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x ...
随机推荐
- number类型转date类型
遇到用数字记录日期时,进行查询转换. create or replace function num_to_date(s in number) return dateisbegin return to_ ...
- 在Spring Boot中动态实现定时任务配置
原文路径:https://zhuanlan.zhihu.com/p/79644891 在日常的项目开发中,往往会涉及到一些需要做到定时执行的代码,例如自动将超过24小时的未付款的单改为取消状态,自动将 ...
- .Net Core HttpClient处理响应压缩
前言 在上篇文章[ASP.NET Core中的响应压缩]中我们谈到了在ASP.NET Core服务端处理关于响应压缩的请求,服务端的主要工作就是根据Content-Encoding头信息判断采 ...
- pageHelper使用时的注意点
1 在pom.xml中导入相关的依赖(注意版本问题,报错十有八九是因为版本问题) <dependency> <groupId>com.github.pagehelper< ...
- Go语言入门系列(五)之指针和结构体的使用
Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...
- 使用 .NET Core 3.x 构建 RESTFUL Api
准备工作:在此之前你需要了解关于.NET .Core的基础,前面几篇文章已经介绍:https://www.cnblogs.com/hcyesdo/p/12834345.html 首先需要明确一点的就是 ...
- 提前批笔试一道算法题的Java实现
题目描述 这是2021广联达校招提前批笔试算法题之一. 我们希望一个序列中的元素是各不相同的,但是理想和显示往往是有差距的.现在给出一个序列A,其中难免有相同的元素,现在提供了一种变化方式,使得经过若 ...
- vue cli 中关于vue.config.js中chainWebpack的配置
Vue CLI 的官方文档上写:调整webpack配置最简单的方式就是在vue.config.js中的configureWebpack选项提供一个对象. Vue CLI 内部的 webpack 配置 ...
- 最后之作-Last Order(bushi
最近化学学有机选修,讲羧酸的时候我想到一个问题:不考虑空间异构.能否稳定存在等问题,某高级饱和脂肪酸有多少种同分异构体?做为一名退役的OIer,我将它抽象为了另一个问题:含\(n\)个\(C\)的饱和 ...
- Java引用类型之弱引用与幻像引用
这一篇将介绍弱引用和幻像引用. 1.WeakReference WeakReference也就是弱引用,弱引用和软引用类似,它是用来描述"非必须"的对象的,它的强度比软引用要更弱一 ...