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%110){
// 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'}),
])
*这是我第一次写博客,也是我记录我学习的一个平台,如果能帮到你,那我很开心,若是有发现错误不足的地方,也欢迎各位大佬指正。