/*定义变量*/
let a = 3; //变量
const b = 5; //常量
/*数组解构 和 嵌套数组解构*/
let[a,b,c,d] = ["aa","bb",77,88];
let[e,f,[e,f]] = ["aa","bb",[55,66]];
alert(e)
/*对象解构*/
let obj = new Object();
obj.uid = 111;
obj.uname = "张三";
let {uname:name,uid:id} = obj;//顺序无所谓
alert(name);
/*字符串解构*/
let [a,b,c,d] = '倚天屠龙';
alert(a);
/*Symbol 唯一不重复*/
let a = Symbol(3);
let b = 3;
alert(a==b);
/*自动去掉重复数据*/
var set = new Set([1,2,3,4,5,4]);
for(var i of set){
console.log(i);
}
/*es5里面的map*/
[1,2,3,4,5,6,7].map(function(i){
console.log(i);
})
/*...变成数组*/
var set = new Set([1,2,3,4,2,8,4]);
var arr = [...set];
console.log("set= "+set);
console.log("arr= "+arr);
/*删除和清空*/
var set = new Set([1,2,3,4,2,8,4]);
set.delete(2);
set.clear();
console.log(set);
/*forEach 循环遍历*/
var set = new Set([1,2,3,4,2,8,4]);
set.forEach(function(value,key){
console.log(value+"----"+key)
})
/*过滤的方法*/
var fiterArr = [ 1,2,3,4,2,8,4].filter(function(elem){
if(elem>3){
return true;
}else{
return false;
}
})
console.log(fiterArr);
/*两个数组求并集*/
let a = new Set([1,2,3]);
let b = new Set([3,4,5]);
let union = new Set([...a,...b]);
console.log([...union]);
/*两个数组求交集*/
let a = new Set([1,2,3]);
let b = new Set([3,4,5]);
let intersect = [...a].filter(function(elem){
return b has(elem);
});
console.log(intersect);
/*两个数组求差集*/
let a = new Set([1,2,3]);
let b = new Set([3,4,5]);
let difference = [...a].filter(function(elem){
return !b has(elem);
});
console.log(difference);
/*weakset 不能取值,也不能显示,只能判断是否有重复的对象*/
var weakset = new WeakSet();
let aObj = {a:'aa'};
let bObj = new String("你好");
let cObj = new Number(8);
weakset.add(aObj);
weakset.add(bObj);
weakset.add(cObj);
weakset.delete(bObj);
console.log(weakset.has(bObj));
/*替换 最后obj[key] 就一个66*/
let objKey1 = {};
let objKey2 = {};
let obj = new Object();
obj[objKey1] = 33;
obj[objKey2] = 66;
for (let key in obj) {
console.log(obj[key]);
}
/*map*/
var mapData = new Map();
var objKey1 = {};
var objKey2 = {};
mapData.set(objKey1,"333");
mapData.set(objKey2,"666");
console.log(mapData.get(objKey1));
console.log(mapData.has(objKey1));
console.log(mapData.delete(objKey1));
mapData.clear();
/*WeakMap 不可遍历,所以没有size属性*/
var wm = new WeakMap();
var obj = new Object();
wm.set(obj,'对象1');
obj = null;
console.log(wm.get(obj));
console.log(wm.has(obj));
/*Iterator 遍历器*/
let arr = ["123",4,"www.baidu.com","北京大学"];
let it = arr[Symbol iterator](); //变成遍历器’
for(;;){ //while true 快四倍
let elem = it.next();
if(elem.done){
break ;
}
}
console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());
console.log(it.next());
/*promise */
let param;
function p1(){
return new Promise(function(resolve,reject){
setTimeout(function(){
console.log("aaa");
param="我是123"; //传值可以用这个
resolve(123);//返回值必填
reject(123);//错误代号。必填
},3000)
})
}
function p2(){
return new Promise(function(resolve,reject){
setTimeout(function(){
console.log("bbb");
resolve(456);
},2000)
})
}
function p3(){
return new Promise(function(resolve,reject){
setTimeout(function(){
console.log("ccc");
resolve(789);
console.log(param);
},1000)
})
}
p1().then(p2).then(p3).then(function(data){
console.log("结束--"+data);
}).catch(function(err){
console.log('出错:'+err);
if(err == 123){
p2().then(p3);
}
})
/*async*/
var sleep = function(time){
return new Promise(function(resolve,reject){
console.log("执行");
setTimeout(function(){
resolve();
})
})
}
let ten = [1,2,3,4,5,6,7,8,9];
var start = async function(){
//在这里使用起来就像同步代码那样直观
console.log('start');
for(let i=0;i<10;i++){
await sleep(3000);
console.log('当前是第${i}次等待、。。');
}
console.log('end');
}
/*箭头函数 防止this转移*/
let func = () => 'hello';
console.log(func());
let cheng = (a=3) => a*a;
console.log(cheng(9));
let add = (a,b) => a+b;
console.log(add(3,3));
let add1 = (a,b) =>{
console.log(a+b);
return a+b;
}
console.log(add1(3,9));