es6基础学习
一、 变量
- var的缺点
可以重复声明
无法限制修改
没有块级作用域 - 产生const与let------特点:
共同特点:
不能重复声明
具有块级作用域
const是常量、let是变量
二、 箭头函数
3. 当只有一个参数时,()可以省略
4. 如果只有一个return,{}可以省略----如 let show=a=>a*2; alert(show(12));
5. 例子
①
function show() {
}
let show= ()=>{
}
②
window.onload=function() {
alert(‘abc’);
};
window.onload= ()=>{
alert(‘abc’);
};
③:
let show= function() {
alert(‘abc’);
};
let show= ()=>{
alert(‘abc’);
};
==使用show()均可调用=
④:
let show= function(a,b) {
alert(a+b);
};
let show= (a,b)=>{
alert(a+b);
};
==使用show(n,m)均可调用=
三、 函数的参数
- 参数的扩展/数组展开
- 默认参数
参数扩展
- 收集剩余的参数 function show(a,b,…args){}
- 展开数组(展开数组的效果跟直接把数组的内容写在这一样)
- 默认参数(可加可不加即默认参数)
又如,传参则改变,不传则默认
四、 结构赋值
- 左右两边结构必须一样
- 右边必须是个东西
- 声明和赋值不能分开(必须在一句话里完成)
- 例子
① :数组格式
② :json格式
五、 数组
- map-----映射-----一对一
[56,98,45,66]
[不及格,及格,不及格,及格]
[
{name:’ble’,level:’1’}
{}
]
ps:map在使用时以一个function作为参数,如下:
①:
let arr=[12,5,8]
arr.map(function(item) {
alter(item); //这里的item参数arr里面的元素
});
let result=arr.map(function(item) {
return item*2; //这里的item参数arr里面的元素
});
======>等同于
let result=arr.map(item=>item*2);
alter(return);
③ :
let score=[55,60,99,80];
let result=score.map(item=>item>=60?’及格’:’不及格’);
alert(score);
alert(result);
-
reduce----汇总—一堆出来一个
得出最后的一个统计情况 -
filter—过滤
-
forEach----循环(迭代)
根据其作用原理,于是可以得到reduce的简单作用如下:
说明:reduce函数中有三个参数,参数1,参数2的作用分别如上图,参数3是索引
小例子,算数组的平均数和总数
let arr=[10,22,56,44]
let result=arr.reduce(function(tmp,item,index){
if(index!=arr.length-1){ //即未到最后一次计算时
return tmp+item;
}else{
return (tmp+item)/arr.length; //否则则是最后一次计算,则除以长度得到平均数
}
});
///reduce的实际运用可以用于:购物车的计算总价等
- filter(即过滤掉不满足条件的,满足条件的元素保留下来)
其中是通过true(保留)和false(不保留)
小例子1
如:对于一个数组,保留能被3整除的元素
let a=[12,9,8,33,11]
let result=arr.filter(function(item){
if(item%3==0){
return true;
}else{
return false;
}
});
alert(result);
或者用箭头函数简写为:
let result=arr.filter(item=>{
if(item%3==0){
return true;
}else{
return false;
}
});
由于item%30本身就是返回布尔值,因此可以简写为
let result=arr.filter(item=>item%30);
例子2:
- forEach----循循环(迭代)
这里使用执行arr.forEach(function(item,index){alert(index+’:’+item})是对数组arr每个元素进行循环操作,这里的index加可不加。
六、 字符串
- 多了两个新方法
startsWith
小例子①,根据网址开头判断网址类型
endsWith(比如根据扩展名来返回图标,如.txt,.png……)
- 字符串模板
链接字符串,使用反单引号,使用反单引号,且KaTeX parse error: Unexpected character: '' at position 6: {东西} ̲ 使用{}可以直接插入字符串
可以折行
如1:
let a=12
let str=a${a}bc
; //将s插入abc字符串中间
如2:
在js中不能折行,所以\转义
而使用``可以
七、 面向对象(最主要是继承)
- class关键字、构造器和类分来了
- class里面直接加方法
旧面向对象格式:
新面向对象
- 继承
3.1旧
3.2 新继承
八、 面向对象的运用
九、 JSON
PS:json的标准写法
1).只能用双引号
2).所有名字都必须用引号包起来
3.JSON对象
1).json格式变成字符串
因此使用
JSON.stringify(json) //即将json字符串化
2).字符串变成json格式
JSON.parse() //解析函数
- json简写
1)、key和value一样时,留一个就可以
2)方法show:function(){}— show(){}
十、 Promise
主要方法
1) Promise.all
2) Promise.race
- 异步请求:不同操作之间没有联系,可同时进行多个操作
- 同步请求:按流程,只能作一件事
- 同步异步各有其优缺点,因此下推出了两者兼用的Promise
- Promise----消除异步操作
用同步一样的方式,来书写异步代码
Promise的使用
Promise是一个对象,因此需要new,如下:,参数是一个函数
①:
let p=new Promise(function(resolve,reject){
//书写异步代码部分
// 参数-resolve—成功了
//参数-reject—失败了
//当Promise执行有结果,则执行then,其中then()函数有两个函数形式的参数,当成功时执行第一个函数,当失败时执行第二个参数。
p.then(function(){},function(){})
});
②:
当有多个Promise对象时,由于只是传入的url不同,则有:
然后使用根据传入url的不同创建不同的Promise对象
PS:成功时返回的arr是包含了arr.txt中的数组对象和json.txt中的json对象
④ :Promise.all()
有了Promise之后的异步,导入jquery库
主要是Promise.all().then
⑤ :Promise.race----竞速(哪个快执行哪个)
十一、generator—生成器
适合场景:中途请求数据
函数模板(加了*)
function * show(){}
调用时不能直接show(),而是先创建生成器对象,然后使用next()的方式,如下:
① :next没有参数
② :再next中传递参数,参数值最终会返回给yield
- 是一个函数
普通函数—>一路到底
-------普通函数涉及到异步操作时只能通过回调函数
generator函数—>中间能停(踹一脚走一步next)
-------generator函数涉及异步操作时可以使用yield暂停,执行其他相关请求操作,如yield ajax(xxx);再接着执行函数。 - yield—放弃执行(暂停执行)
1) 可以传参、返回参数
- generator例子:
使用node.js辅助,then使用gennerator来读取数据库数据
上一篇: Spring Boot运行模式
下一篇: 详解Linux time 命令的使用