es6

1 篇文章 0 订阅

ES6的学习

1.变量

var
1 可以重复使用
2 无法限制修改
3 没有块级元素

let 不能重复声明,声明变量-可以修改,块级作用域{}
const 不能重复声明,声明常量-不能修改,块级作用域{}

2.箭头函数

传统的函数
function 名字(){
参数
}

箭头函数
() => {

}

由传统变为箭头,就是把function 去了,然后()后面加上 =>

eg:

    //let show = function(){
    //     alert('abc');
    // }

    let show = () =>{
        alert('abc');
    }
    show();

优点:方便

箭头函数也可以传参数
eg:

   // let show = function(a,b){
   //     alert(a+b);
   // }

   let show = (a,b) =>{
       alert(a+b);
   }
   show(2,5);

重点:
1.如果只有一个参数,()可以省略

eg:

let show = function (a) {
return a*2;
}
alert(show(12));

      let show = a => {
        return a*2;
      }
      alert(show(12));
2.如果只有一个return,里面其他参数也没有{}可以省略

eg:

      let show = a =>a*2;
  
      alert(show(12));

3.函数参数

1.参数扩展/展开
2.默认参数

**参数扩展
1.收集剩余的参数
实参可以传多个,可以超过形参的个数,但是,当不知道多余的实参有多少时,其他多的参数可以用一个数组给包含起来,形式如下
...数组名(可以自己起名字) 如 ...args
eg:
   function show(a,b) {
       alert(a);
       alert(b);
     }
   show(12,15,8,9,20);

//a,b只接收了12和15,剩余的8,9,20,可以在这个数组里 …args

   function show(a,b,...args) {}

注:Rest Parameter必须时最后一个参数,即后面不能再有参数,否则报错

**参数展开
eg:
let arr = [1,2,3];
...arr ---> 1,2,3;
直接就展开里面的元素
 又:
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = [...arr1,...arr2];
alert(arr); --->1,2,3,4,5,6;
but:它不能用来赋值,会报错或者直接出不来
错误示例:

let arr1 = [1,2,3];
let a;
a=…arr1;
!!!这是不允许的!!!

**默认参数
有一些函数,有一些参数时可以选择性传的,你不传的时候,会有一个默认值,若是传进去了,就会把默认值给覆盖掉
eg:
function show(a,b=5,c=7){
    alert(a);
    alert(b);
    alert(c);
}

show(10); //-->打印出 10,5,7
show(10,7,9) //-->打印出 10,7,9

4.解构赋值

1.左右两边必须解构一样(左边是数组,右边也是数组,左边是json,右边也是json)
2.右边必须是隔东西,有具体的值,必须是合法的
3.声明和赋值不能分开(必须在一句话里完成)

最简单的eg:
let [a,b,c] = [1,2,3] ;alert(a,b,c);-->1,,2,3

比较复杂的eg:
let [{a,b},[n1,n2,n3],num,str] = [{a:12,b:5},[12,5,8],8,'lsy'];

5.数组

1.map             映射                  一个对一个,给你多少,返回多少
    [12, 58, 99, 86, 45, 91]
    [不及格,不及格,及格,及格,不及格,及格]

    [45, 57, 135, 28]
    [
        {name:'bilue',level:0,role:0},
        {name:'zhangsan',level:99,role:3},
        {name:'aaa',level:0,role:0},
        {name:'bilue',level:0,role:0}
    ]

    用法:会返回一个值
    eg:
   let arr=[12,5,8];
   let result = arr.map(function (item) {
   alert(item);
   return item*2;
 })
 alert(result);

用箭头函数表示:let result = arr.map(item => item*2);

2.reduce          汇总                  一堆出来一个
算个总数
    [12,80000,6000] => 86012 

算个平均数
    [12,59,99,]  => 56.67

*这个reduce,都有些什么参数
求和的
let arr = [12,69,180,8763];
arr.reduce(function (tmp,item,index){
    //alert(tmp+','+item+','+index);
    if(index!=arr.length-1){   /如果不是最后一次,就只求和
        return tmp+item;
    }else{  //如果是最后一次,不仅求和,还有除以长度
        return (tmp+item)/arr.length;

    }
})
c是下标,代表第几次,
a代表中间结果,类似于小学的算数加法,两两相加

在这里插入图片描述

3.filter          过滤器            留一部分,删一部分
一般可以用来条件显示

let arr = [12,5,8,99,27,36,75];

let result = arr.filter(item=>item%110
// 返回布尔值,true就留下,false就不留下
// if(item%11
0){
// return true;
// }else{
// return false;
// }

)
alert(result);
4.forEach 循环(迭代)
let arr =[12,5,8,9];
arr.forEach((item,index)=>{
alert(index+’:’+item);
});

6.字符串

1.多了2个新方法
    starsWith   以什么开头,返回的是布尔值
    endWith     以什么结尾,返回的是布尔值
二者用法相似

2.字符串模板    反单引号    ``
  字符串连接

  i.直接把东西塞到字符串里面    $(东西)
  ii.可以折行,在写html的时候,特别方便、

※7.promise–消除异步操作

1 用同步一样的方式,来书写异步代码  
2 怎么用  


let p=new Promise(function(resolve,reject){
    // 异步代码
    // resolve --成功了
    // reject --失败了
    // 用promise来封装一个ajax
    $.ajax({
        url:'arr.txt',
        dataType:'json',
        success(arr){
            //成功了用resolve
            resolve(arr);
        },
        error(err){
            // 失败了用reject
            reject(err);
        }
    })
});

p.then(function(arr){
    alert('成功了');
},function(err){
    alert('失败了');
});
//调用这个promise有结果了就会执行then(),2个参数,相当于resolve 和 reject

// 若是多个promise,你就要写多少个then(),那跟ajax就没有什么差别
// Promise有一个al()属性,接收一个数组作为参数,把你的所有promise作为元素扔进去就行
// 所以的成功了才算成功,只有有一个失败,就是失败
Promise.all([
    p1,p2
]).then(function(arr){
    alert('全都成功了')
},function(){
    alert('至少有一个失败了')
})

// 高版本的jq自带promise函数
let p = $.ajax({url:'data/arr/txt',dataType:'json'});
// ajax有一个返回值,实际上就是一个promise对象
// 所以,promise就这么用
Promise.all([
    $.ajax({url:'data/arr.txt',dataType:'json'}),
    $.ajax({url:'data/arr.txt',dataType:'json'}),
]).then(function(){},function(){})

Promise.all
Promise.race  竞速  那个快就用那个,不过不常用,比较浪费资源

Promise.race([
    $.ajax({url:'http://a2.taobao.com/data/users'}),
    $.ajax({url:'http://a15.taobao.com/data/users'}),

    $.ajax({url:'http://a20.taobao.com/data/users'}),

    $.ajax({url:'http://a12.taobao.com/data/users'}),

    $.ajax({url:'http://a6.taobao.com/data/users'}),

])

//a2.taobao.com/data/users’}),
$.ajax({url:‘http://a15.taobao.com/data/users’}),

    $.ajax({url:'http://a20.taobao.com/data/users'}),

    $.ajax({url:'http://a12.taobao.com/data/users'}),

    $.ajax({url:'http://a6.taobao.com/data/users'}),

])

*这是我第一次写博客,也是我记录我学习的一个平台,如果能帮到你,那我很开心,若是有发现错误不足的地方,也欢迎各位大佬指正。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值