模板字符串 解构

template模板字符串

var html = "<div><p></p><span></span></div>";
console.log(html);

以上代码;书写很麻烦,也没有换行什么的,因为换行会很麻烦,(要使用拼接)打印出来的也是没有换行的文本
以下这种稍微简单一点

var str = `
<div>
    <p>${name="zjar"}</p>
    <span></span>
    我是content
</div>
`
console.log(str);

结构稍微清晰一点,打印出来也是换过行的文本 用的是两个撇号,把要写的内容放在两个撇号里面.可以随意换行.
在模板里面还能使用变量,以上代码的 name 就是一个变量,方便维护.书写语法是:${age=30};

解构

. 对象定义可以直接使用已有的变量。如果使用了没有定义的变量,则会抛出异常。这就是ES6的解构,可以直接使用已有变量。

var  name = "zhar";
var obj = {
    name : name,
}
console.log(obj);
//解构
let age = 30;
let obj2 = {name,age};
console.log(obj2);//输出两个键值对 {name:"zhar',age:30} 使用了已有的变量
// let n = "nnnnnn"
let obj3 = {n,age,name};
console.log(obj3);//这个就会报错,n is not defined 
//如果在 let 之前声明一下 n ,就会直接输出了; 三个键值对形式的

变量与対象定义可以混用 以下

let obj4 = {nn:"2n",n,age};
console.log(obj4);

可以直接声明变量 以下

let obj5 = {name:"zhar",age:30,address:"北京"};
let {adress} = obj5; //等同于let address = obj5.address
console.log(address);//北京
//在这块,我的理解是 let 后面跟的变量的形式是一样的,
//如果是对象,等号那边也是对象,如果是字符串,等号那边也是字符串,
//比如let address = obj5.address

可以作为参数来使用 以下

let obj5 = {name:"zhar",age:30,address:"北京"};
function fun({name,age,address}){
    console.log(22,name,age,address)
}
fun(obj5);//  22   "zhar"  30  "北京"

以下代码是之前学ES5的方法,

let obj5 = {name:"zhar",age:30,address:"北京"};
function fun(o){
    console.log(o.name,o.age,o.address);
}
fun(obj5);//也可以得到"zhar"  30  "北京"

set&map

先看代码: set 语法

set

构建方法:

  1. let = new Set([ ]);
  2. let s = new set( );

set 与 Array 类似:但也有不同

set 特点:

  1. 输出的没有重复元素,数组去重
  2. 没有 length 属性
  3. 没有下标的概念,不要用下标去取值;
    注意: s 是new Set 的实例 set 是个集合
let s = new Set([1,2,3,3,4,5,6,2,1]);
console.log(s);   //{1,2,3,4,5,6}   特点1
console.log(s.length);  // undefined  特点2

set 的方法和属性

  1. add();向集合添加元素
  2. has();是否包含某个元素
  3. delete();删除指定元素
  4. size;得到集合的长度 属性, 其他四个是方法
  5. clear(); 清空集合;
let s2 = new Set();
    s2.add(1);
    s2.add(2);
    s2.add(1);
    s2.add(2);
console.log(s2,s2.size);//无length属性,但是有size属性  得到的结果是{1,2} 2
console.log(s2.has(1),s2.has(2),s2.has(3)); //结果是true true false

jquery里面有 lenght 和 size() 方法 容易混淆 都是计算元素数量的


s2.delete(1);//删除
console.log(s2);//结果是{2}
s2.clear();//清空
console.log(s2);//返回一个{  } 
console.log("==========",s2[0]);//结果是 undefined 特点3

遍历属性

  1. keys() 和 values() 的输出结果相同
  2. entries() 的输出结果是 键 和 值 的形式
let s = new Set([1,2,3,3,4,5,6,2,1]);
console.log(s.keys());
console.log(s.values());
console.log(s.entries()); 

map

  1. map对应的是H5里面的Object map是个集合
  2. map可以使用任意类型做键,哪怕是函数,兑现

let m = new Map();
m.set("name","zhar");
console.log(m);//{'name'=>'zhar'}
console.log(m.get("name"));//zhar

let a = 10;
m.set(a,"abc");
console.log(m);//结果是 {"name"=>"zhar",10=>"abc"};

最后总结一点:console.log(Set) 结果是一个函数; function Set(){[native code]}

我是分割线

promise 承诺

//ES5的写法
function fun(){
//用setTimeout 替代一个异步执行的内容 ajax
//不可预估返回结果时间,
    setTimeout(function(){
         console.log("异步--执行完成");
     },1000)
 }
fun();//过一秒输出 异步--执行完成

//回调函数  会层层嵌套,比较繁琐
 function foo(callback){
    setTimeout(function(){
         callback("callback 给你的结果")
     },1000)
 }
 foo(function(res){
     console.log(res)
 })

promise特点

  1. ES6增加了promise 用来解决异步的层层嵌套的
  2. promise有三种状态,pending 等待 resolved 已解决 rejected 驳回
  3. promise实例创建成功时,就会有一个异步的请求
  4. promise语法
let promise = new Promise(function(resolve,reject){
    if(true){//表示成功
        resolve(); //成功的方法  决定
    }else{
         reject();  // 失败的方法  拒绝
    }
 });
 promise.then(function(){
     console.log("success");
 },function(){
     console.log("失败")
 })
//输出结果是   success

--------------------------------------以上是promise语法-------------------------------


function sync1(){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
            if(true){
                resolve("异步一:大于");
            }else{
                reject("异步一:小于")
            }
        },1000)
    });
};
function sync2(result){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
            if(true){
                resolve("异步二:true");
            }else{
                reject("异步二:false");
            }
        },2000)
    })
};
function sync3(){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
            if(true){
                resolve("异步三:true");
            }else{
                reject("异步三:false");
            }
        },4000)
    })
};
sync1().then(function(res){
       con sole.log(abc);
     console.log(res);
     return sync2(res);
 },function(err){
     console.log(err);
 }).then(function(r2){
     console.log(r2);
     return sync3();
 }).then(function(r3){
     console.log(r3);
     return "abc";
 }).then(function(r4){
     console.log(r4);
     return "def";
 }).then(function(r5){
     console.log(r5);
 }).catch(function(){
     console.log("异常");
 });

//try catch finilly

以上 创建了3个promise实例,用setTimeout模拟异步触发,对比ES5可以很好的解决多层回调函数嵌套

//全部异步函数执行完成后调用resolve 以最慢者为准   
Promise.all([sync1(),sync2(),sync3()])
.then(function(res){
    console.log(res);
});
//race 只返回最快,返回结果只有一个
 Promise.race([sync1(),sync2(),sync3()])
 .then(function(res){
     console.log(res);
 });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容