var
1.可以重复声明
2.无法限制修改
3.没有块级作用域
let 不能重复声明,变量-可以修改,块级作用域
const 不能重复声明,变量-不可以修改,块级作用域
箭头函数
function 名字(){
}
()=>{}
1.如果只有一个参数 ()可以省
2.如果只有一个return,{}可以省
let show=a=>a*2
arr.sort((n1,n2)=>n1-n2)
函数的参数
1.参数的扩展和数组展开
(1)收集剩余的参数
function show(a,b,...args){}
(2)数组的展开
let arr=[1,2,3];
show(...arr);
function show(a,b,c){
alert(a);alert(b);alert(c)
}
let a=[1,1,1]
let b=[2,3,4]
let c=[...a,...b]
2.默认参数
function a(b=3){}
解构赋值
1.左右两边结构一样
2.右边是个东西
3.声明和赋值放一起写
let [a,b,c]=[1,2,3]
let {a,c,d}={a:12,c:5,d:6}
let [{a,b},[n1,n2,n3],num,str]=[{a:12,b:5},[12,3,4],5,'ddf']
数组:
map 映射 一个对一个
let arr=[1,2,3]
let result =arr.map(function(item){
return item*2
})
let result =arr.map(item=>item*2)
let score=[19,34,56,75,43]
let result= score.map(item =>item>=60?'及格':'不及格')
reduce 汇总 一堆出来一个
let arr=[12,23,4,5]
let result=arr.reduce(function(tmp,item,index){
tmp 中间结果
item 第几项的值
index 第几项
})
求平局
let arr =[23,34,54,45]
let result=arr.reduce(function(tmp,item,index){
if(index!=arr.length-1){
return tmp+item;
}else{
return(tmp+item)/arr.length
}
})
alert(result)
filter 过滤器
let arr=[12,32,34,99,45]
let result =arr.filter(item=>item%3==0)
alert (result)
let arr=[
{title:'xie',price:74},
{title:'wazi',price:734344},
{title:'kuzi',price:724}
];
let result=arr.filter(json=>json.price>=10000);
console.log(result)
forEach 迭代
let arr=[12,3,4,5]
arr.forEach((item,index)=>{
alert(index+':'+item);
});
字符串
1.startsWith()
2.endsWith()
布尔值
3 字符串模板
let title='标题';
let content='内容';
let str=`<div>
<h1>${title}</h1>
<p>${content}</p>
</div>`;
1.可以直接把东西放在字符串里面 ${东西}
2.可以折行
面向对象
class User{
constructor(name,pass){
this.name=name;
this.pass=pass;
}
showName(){
alert(this.name);
}
showPass(){
alert(this.pass)
}
}
var u1=new User('dsfs','22')
u1.showName;
u2.showPass;
1.class关键字 构造器和类分开
2.class里面直接加方法
继承:
class VipUser extends User{
constructor(name,pass,level){
super(name,pass);
this.level=level;
}
showLevel(){
alert(this.level);
}
}
var v1=new VipUser('sss','22','3')
json
1.JSON.stringify
JSON.parse
let str='{"a":12,"b":5,"c":"aaa"}';
let json=JSON.parse(str)
let json={a:12,b:5};
let str='http://baidu.com/path/user?data='+encodeURIComponent(JSON.stringify(json));
2简写
名字和值(key和value)一样的 留一个就行
let a=2;
let b=3;
let json={a,b,c:123}
方法: show:function(){...}
show(){...}
:和function一块删
promise
1.let p=new Promise(function(resolve,reject){
$.ajax({
url:'data/1.txt',
dataType:'json',
success(arr){
resolve(arr);
},
error(err){
reject(err)
}
})
})
p.then(function(arr){
alert('成功'+arr)
},function(err){
alert('失败'+err)
});
2.function createPromise(url){
return new Promise(function(resolve,reject){
$.ajax({
url
dataType:'json',
success(arr){
resolve(arr);
},
error(err){
reject(err);
}
})
})
}
Promise.all([
createPromise('data/1.txt'),
createPromise('data/2.txt')
]).then(function(arr){
let [res1,res2]=arr;
},function(){
alert('error')
})
3.
Promise.all([
$.ajax({url:'data/1.txt',dataType:'json'}),
$.ajax({url:'data/2.txt',dataType:'json'})
]).then(function(results){
let [arr,json]=results;
},function(){
alert('error')
})
Promise.all([$.ajax(),$.ajax()]).then(results=>{ok
},error=>{error})
generator 可停函数
function *show(){
alert('a');
yield;
alert('b');
}
let genObj=show();
genObj.next();
genObj.next();
yield
1.function *show(num1,num2){
alert(`${num1},${num2}`);//99,88
alert('a');
let a=yield;
alert('b');
alert(a);// 5
}
let gen=show(99,88);
gen.next(12);//没法给yield传参
gen.next(5);
2.function *show(){
alert('a');
yield 12;
alert('b');
return 55;
}
len gen=show();
len res1=gen.next();
console.log(res1);//{value:12,done:false}
let res2=gen.next();
console.log(res2);//{value:55,done:false}