- ECMAScript是个多个浏览器的厂商联合起来
- es6有面向对象模块化
- let和const(区分变量和常量,以前都是var)
var PI=Math.PI;//常量就是不能改变的
解决了var变量穿透的问题和常量修改的问题(常量无法修改,会报错)
for(var i=0;i<5;i++){
console.log(i); //1 2 3 4
}
console.log(i); //5 js语法是通过的
//改成let 会直接报错
//建议用var,低版本浏览器不支持let
- 模板字符串(替换动态的值)可以支持换行
let name="jams";
console.log(`我是${name}`)
- 函数的默认值
function aa(a,b=100){ //函数使用默认值
console.log(a+b);
}
aa(100) //传给a,b用默认值
- 箭头函数
//改进1
var sum=(a,b)=>{
return a+b
}
//改进2(只有一个return可以去掉,有逻辑体不去,就是只有一句话可以)
//可以去大括号
var sum1=(a,b)=> a+b
//只有一个参数()可以去掉
var aa= a=> a+1
var abc3=a=>{return a+1} //不存在有大括号没有return
- 对象简写
var name="jams"
var info={
name, //原来name:name
age:23,
go(){ //直接去掉function,原来 function go(){}
console.log("xxx");
}
}
//运用:
var params={name,age};//直接简写
$.ajax({
type:"post",
data: params,
sucess:(){} //也可以简写,在对象里面去function
})
- 对象的结构
var person={name:"jams",age:23,go(){}}
//person.name
//person["name"] //得到name的值的两种方式
//person["go"]();
var {name,age,go}=person;//解构值
console.log(name);
go() //函数解构
8.传播操作符… (把剩余的属性给另外一个对象)(与结构配合使用)(…对象必须在结尾)
(也是把一一对应声明赋值)
其他代码如上: ()
var {name,...person}=person2
- map
- 要对数组循环每个*2
let arr=[1,2,3]; let arr1=[]; //2,4,6 for(let i=0;i<arr.length;i++){arr1.push(arr[i]*2)}
等同于map 自带循环,并把处理的结果放到原来的位置(回填到对应位置)
(返回的是结果出来的对象的名字)
var arr2=arr.map(function(ele){ return ele*2})
var obj=[{
name:"小明",
age:10
},
{
name:"小化",
age:12
}]
let laterObj=obj.map((obj)=>{
let {age}=obj;
age=age+1;
return age; //对解构的对象操作,后返回去修改
})
- reduce把所有元素相加
//原理:
var arr=[1,2,3,4];//全部相加
a=1 ,b=2 a+b=3
a=3 ,b=3 a+b=6
a=6,b=4 a+b=10
a=10;
var res=arr.reduce(function(a,b){
return a+b;
})
- 所有es6语法可以用到node.js