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

  1. for ... of 循环的是值--key

    2.for ... in 循环的是下标--index

    3.enries 所有键值对拿出来 {a:1}

幂运算

  1. ** = 快捷运算
  2. 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的更多相关文章

  1. ES6 的解构赋值前每次都创建一个对象吗?会加重 GC 的负担吗?

    本文来源于知乎上的一个提问. 为了程序的易读性,我们会使用 ES6 的解构赋值: function f({a,b}){} f({a:1,b:2}); 这个例子的函数调用中,会真的产生一个对象吗?如果会 ...

  2. ES6之解构赋值

    截止到ES6,共有6种声明变量的方法,分别是var .function以及新增的let.const.import和class: 我们通常的赋值方法是: var foo='foo'; function ...

  3. 进军es6(2)---解构赋值

    本该两周之前就该总结的,但最近一直在忙校招实习的事,耽误了很久.目前依然在等待阿里HR面后的结果中...但愿好事多磨!在阿里的某轮面试中面试官问到了es6的掌握情况,说明es6真的是大势所趋,我们更需 ...

  4. es6的解构赋值学习(1)

    相对es5的简单的"="赋值来说,es6增加了一种新的赋值模式--解构赋值,按照它的规则,可以从数组和对象中提取值来对变量进行赋值,个人觉得方便了很多,但是这个模式有点恶心人,相比 ...

  5. Es6 新增解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 要想实现解构,就必须是容器,或者具有可遍历的接口. 以前,为 ...

  6. es6的解构赋值用途

    (1)交换变量的值 let x = 1; let y = 2; [x, y] = [y, x]; 上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰. (2)从函数返回多个值 函数 ...

  7. ES6 之 解构赋值

    本博文配合 阮一峰 <ES6 标准入门(第3版)>一书进行简要概述 ES6 中变量的解构赋值. 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这 ...

  8. ES6变量解构赋值

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构ES6之前我们申明多个变量需要按照下面的方法: let l a=1; let b=2; let c=3; let d=4; ...

  9. es6变量解构赋值的用途

    这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x ...

随机推荐

  1. luogu P2467 [SDOI2010]地精部落

    很有意思的dp计数题目. 思考一下发现开始时山峰和开始是山谷的方案数是相同的 所以我们只需要统计一个即可. 证明的话可以考虑对于任意一种开始时山峰的方案 每个数字变成n-a[i]+1 那么可以此方案还 ...

  2. JVM科普

    目录 再看前言 不完美的程序 Java发展史 JVM族谱 什么是广义的虚拟机? 什么是Java虚拟机(JVM)? 二刷周先生的<深入理解JVM>时,没想到已经出了第三版,拿着第二版的我在风 ...

  3. vue做多行滚动广告牌

    利用vue可以很方便的做滚动广告屏,结合前端和vue,废话不多说,直接上代码 1.前端 <div class="notice"> <div class=" ...

  4. x86架构:分页机制和原理

    分页是现在CPU核心的管理内存方式,网上介绍材料很多,这里不赘述,简单介绍一下分页的背景和原理 1.先说说为什么要分段 实模式下程序之间不隔离,互相能直接读写对方内存,或跳转到其他进程的代码运行,导致 ...

  5. Eclipse Java EE IDE for Web Developers 4.5.1 安装hibername tools 插件

    方式一:在线安装(太慢) 方式二:离线安装,下载hibernate tools 插件到本地,然后在eclipse菜单栏点击 help: ①添加插件,选择下载后的插件,内容框中可选择hibernate ...

  6. MyBatisPlus性能分析插件,条件构造器,代码自动生成器详解

    性能分析插件 我们在平时的开发中,会遇到一些慢sql,测试,druid MP(MyBatisPlus)也提供性能分析插件,如果超过这个时间就停止 不过官方在3.2版本的时候取消了,原因如下 条件构造器 ...

  7. 解决drf_yasg中的SwaggerAPI无法正确分组问题

    swagger是后台开发中很好用的交互式文档,Django原本的Django-Swagger已经停止维护了,现在一般用drf_yasg这个包来实现文档,它里面支持swagger和redoc两种,red ...

  8. 【JAVA】java中int转成String位数不足前面补零例如:1->001

    String.format("%03d", 1); 0代表前面要补的字符3代表字符串长度d表示参数为整数类型 测试完数据:循环了100次 截取了一部分:

  9. java 访问修饰符与代码块

    一 访问修饰符 要想本包中的类都可以访问不加修饰符即可:  要想仅能在本类中访问使用private修饰: 要想本包中的类与其他包中的子类可以访问使用protected修饰 要想所有包中的所有类都可以访 ...

  10. tableauRFM分析

    1.数据源 2.创建相关字段 2.1 购买点会员生命期 2.2 会员最后购买时间 2.3 最后购买点生命期 3.近一个月老客户的生命期情况 排除了当天创建当天购买的情况,可以看到超市的大部分用户是两年 ...