ES6
介绍
ECMAScript是JavaScript的标准,JS是ES的实现;
ES6正式名称:ECMA2015,是ECMA标准的第6版;
变量
let const 块级作用域
var | let | const |
---|---|---|
重复声明 | 不能重复声明 | 不能重复声明 |
不能限制修改 | 变量,可修改 | 常量,不可修改 |
函数级 | 块级 | 块级 |
可以在声明前调用,显示undefined | 报错 | 报错 |
块级作用域:
只在代码块内可用
函数级作用域:
只在函数内可用
解构赋值
注意点:
- 两边的结构必须一样
- 右边必须是个东西,合法
- 赋值和解构必须同时完成
let {a,b}={a:1,b:2} //1,2
let [a,b]=[1,2] //1,2
let {a,b}=[1,2] //undefined undefined 结构不一样
let [a,b]={1,2} //Uncaught SyntaxError: Unexpected token ',' 右边不合法
let [a,b]
[a,b]=[1,2] //Uncaught SyntaxError: Missing initializer in destructuring declaration 赋值和解构没有同时进行
函数
箭头函数
简写
function(){} //原写法
()=>{} //箭头函数
注意点:
- 如果有且仅有一个参数,()可以不写
- 如果有且仅有一个语句,并且是return,{}也可以不写
function show(n,fn){
console.log(fn(n));
}
//原写法
function add(n){
return n+5;
}
show(0,add)
//箭头函数
show(0,(n)=>{return n+5})
//省略()
show(0,n=>{return n+5})
//省略{}
show(0,(n)=>n+5)
//省略()和{}
show(0,n=>n+5)
修正this
将this固定到当前环境(我也不太懂~~)
参数展开,收集 数组展开 json展开(’…’)
收集参数(必须在最后一个)
fn(1,2,3,4,5)
function fn(a,b,...c){
console.log(a,b,c); //1 2 [3, 4, 5]
}
展开参数
let a=[1,2,3]
fn(...a)
function fn(a,b,...c){
console.log(a,b,c); //1 2 3
}
数组展开
let a=[1,2]
let b=[3,4]
let c=[...a,...b]
console.log(c); //[1, 2, 3, 4]
json展开
let json={a:1,b:2}
let json2={...json,c:3}
console.log(json2); //{a: 1, b: 2, c: 3}
原生对象扩展
Array扩展
map
映射:一一对应
let arr=[58,45,76,87]
let arr2=arr.map(function(item,index){
if(item>=60){
return "及格"
}else{
return "不及格"
}
})
console.log(arr2) //["不及格", "不及格", "及格", "及格"]
//简便写法
let arr2=arr.map(item=>item>=60?'及格':'不及格')
reduce
let arr=[23,45,56,67,75]
//求和
let and=arr.reduce(function(tmp,item,index){
return tmp+item
})
console.log(and) //266
//求平均值
let mean=arr.reduce(function(tmp,item,index){
if(index==arr.length-1){
return (tmp+item)/arr.length
}else{
return tmp+item
}
})
console.log(mean) //53.2
filter
查找筛选
forEach
遍历
JSON
JSON中必须使用双引号
JSON.stringify()
将JSON对象转换成字符串
JSON.parse()
将字符串转换成JSON对象