因为用到了,所以涉及一点,扫一下知识盲区。
JS-ES6
ECMAScript = ES = 是一套标准,类似于HTML5, JS是实现。
兼容性
ES6,IE10+,Chrome,FireFox,移动端,NodeJS 这些都是兼容的。
编译、转换:
1、在线转换 browser.js = babel
2、提前编译
ES6都有啥变动?
- 变量
- 函数
- 数组
- 字符串
- 面向对象
- Promise, 用来做串行话的异步请求
- generator,把同步操作拆成异步操作
- 模块化
变量
var
1.可以重复声明
2.无法限制修改
3.没有块级作用域
let
1.不能重复声明
2.变量,可以修改
3.块级作用域
const
1.不能重复声明
2.常量,不可以修改
3.块级作用域
函数
箭头函数
()=>{
} lambda表达式,是模仿Python里边的。
1.如果只有一个参数,()可以省略。
2.如果只有一个return,{}可以省略
参数
1.参数扩展/展开
数组扩展:function show(a,b,...args){}
? rest Parameter必须是最后一个
展开数组: let arr = [1,2,3] show(...arr),
2.默认参数
? function show (a, b=4,c=12){} show(99,12)
解构赋值
1.左右两边结构必须一样
2.右边必须是个东西
3.声明和赋值不能分开(必须在一句话里完成)
例如:
数组: let [a,b,c] = [1,2,3] console.log(a,b,c)
json: let {a,b,c} = {a:5,b:1,c:3}
混合: let[{a,b},[n1,n2],num,str] = [{a:12,b:3},[1,2],3,f]
数组
Map 映射 一个对一个
? let arr = [12,3,4] ; arr.map()
reduce 汇总
· 算总和: arr.reduce(tmp,item,index)
? 算平均数:
filter 过滤器
? arr.filter(item=>return true/false)
foreach 循环
? arr.forEach(item,index => ())
字符串
多了两个新方法
startWith str.startWith("http://") ,
endWith str.endWith(".png")
字符串模板
let str =
a${b}c
; 反单引号i.直接把东西塞到字符串里边。 ${东西}
ii.可以折行
ES6的面向对象
- class 关键字,构造器和类分开了
- class里边直接加方法
class User{
? constructor(name,pass){
? this.name = name;
? this.pass = pass ;
? }
? showName(){
? alert(name);
? }
}
继承
面向对象应用--React
React: 基于组件开发
- 组件化-class
- JSX==babel == brower.js
JSON
JSON对象
- JSON.stringify(json): 串行化,将json对象转换成字符串
- JSON.parse(str) : 解析
JSON的简写
- 名字和值(key和value)一样,留一个就行
- 方法 :function一块删
例如:
show : function(){...}
show(){...}
JSON对象:串行化,解析。
JSON的标准写法:
- 只能用双引号
- 所有的名字都必须用引号抱起来
Promise
Promise 许诺,承诺。
异步:操作和操作之间是没关系的,同时进行多个操作
同步:操作之间相关,同时只能做一件事
异步:代码更复杂
同步:代码简单
Promise,用同步的方式,来写异步代码
Promise.all
Promise.racs
jQuery自带Promise。
AJax的返回值就是Promise。
Generator-生成器函数
普通函数-一路到底 function show(){}
generator函数-中间能停 function *show(){ a , yield ; c } 返回对象.next() 继续往下走。