zoukankan      html  css  js  c++  java
  • es6学习笔记

    一 、声明方法

    ES5var 声明

    输出结果:undefined 

    ES6使用letconst声明(let 用来声明一个变量 const 用来声明一个常量)

    let (* let 的作用域是在它所在当前代码块)

    使用var 和let 声明的区别

    eg:

    (1)使用var 声明

     

    输出结果: 10次 10

    (2)使用let声明

    输出结果: 0 1 2 3 4 5 6 7 8 9

    const (const 声明一个只读的常量,一旦声明,常量的值就不能改变。const一旦声明变量,就必须立即初始化,不能留到以后赋值)

    var 声明(同一个变量,后面变量的值会覆盖前面的值)

    输出结果: joe

    const 声明

    输出结果:报错 

    二、模板字符串

    (1)基本字符串格式,将表达式嵌入字符串中进行拼接 用${}界定

    ES5 

    ES6(使用${}界定)

    (2) ES5通过反斜杠()来做多行字符串或者字符串一行行拼接, ES6通过反引号(``)

    ES5使用

      ES6 使用``

     

     (3) includes 判断是否包含某个字符 返回布尔值

    输出结果:true

     (4) repeat 将字符重复n次

    输出结果:hehehe

    三、函数

    (1)函数参数默认值

    ES5

    输出结果:不设置或者设置为0 时 输出200 设置非0 的值 输出所设的值

    ES6 可以为参数提供默认值,定义函数时便初始化这个参数,以便在参数没有被传递进去时使用

    输出结果:200 / 0

    (2) 箭头函数

    等同于

    函数有且仅有一个参数时 可以省略掉括号

    四、扩展的对象功能

    ES5

    ES6 如果键、值一样时 可以如下写法:

    为对象添加方法:

    ES5 

    ES6 可以省略冒号和function 关键字

    五、更方便的数据访问-解构

    提取对象中的信息

    ES5 

     

    ES6

    对象: `${}`

    读取数组中的信息:

    六、展开运算符 (...)

    (1)组合数组、对象

    数组:

    输出结果:['red','blue','black','white']

    对象:

    输出结果:{first1:'caoyu',second:12,third:'女'}

    获取数组或对象除了某几项之外的其他项

    rest参数作用:将多余的逗号分隔的参数序列转换为数组参数 

    *rest 参数必须是最后一个参数 否则报错

    数组:

    输出结果:[3,4,5]

    对象:

    输出结果:[third_7:"女"]

    组合新的对象 如果出现重复的属性名,右边的覆盖左边的

    输出结果: {first_8: "caoyu", second_8: 12, third_8: "女", first_9: "caoyus", second_9: 13, …}

    七、promise

    回调方法:是将一个方法func2作为参数传入另一个方法func1中,当func1执行到某一步或者满足某种条件的时候才执行传入的参数func2

    eg:调用func1 时 如果第一个参数大于10 并且参数2 为一个函数的时候 才输出 this is callback

    一般情况,回调嵌套不会很多,可是当回调嵌套很多时,代码会非常繁琐,给编程带来麻烦

    这种情况下就需要使用promise 把原来的回调写法分离出来 在异步执行完成之后 用链式调用的方式执行回调函数

    promise 使用方法

    then()方法

    是Promise 原型链上的方法 它包含两个参数方法,分别是已成功的resolved 的回调 和已失败rejected 的回调

    then里面的函数跟我们平时的回调函数一样,能够在promise_9这个异步任务执行完成之后被执行 使用then时 如果抛出异常,js 卡死 不能继续执行后面的代码

    以上是resolve 也就是"执行成功"的回调 还有"执行失败"的情况 就需要使用reject,reject的作用就是把promise 的状态置为rejected

    reject 使用方法:

    catch()方法 

    效果和写在then的第二个参数里面一样,不过它还有另一个作用:在执行then 中第一个参数时,如果抛出异常,并不会卡死js 而是继续执行catch中的方法

     eg:

     

    all 方法 

    所有的异步操作都并行执行完成之后 进入到then 中  all 方法是以谁最后执行完 以它为准执行回调

    使用all promise_9()、promise_10()、promise_11() 中的函数同时执行 最后执行完成后 进入then()

    race 方法

    使用方法和all 是相同的 但是他是以最先开始执行的为准 执行回调

     

    使用race  promise_9()、promise_10()、promise_11() 中的函数开始执行就进入then()

     

    放入race 中的requestImg(), timeout() 会进行赛跑  如果图片请求成功 就进入then 方法 如果1s之后没有请求成功 执行catch 方法

    八、generators 生成器 

    普通函数和生成函数的区别:

    (1)普通函数声明函数使用function 生成器函数使用function*声明

    (2)生成器中的关键字 yield 相当于普通函数中的return语法 二者的区别是普通函数只可以return 一次 而生成器函数可以yield 多次

    (3)可以把生成器对象当做一个函数调用,但是立即冻结了。每次调用生成器对象的.next()方法,函数就会将自身解冻然后运行直到遇到下一个yield 表达式 。generator 函数允许在运行的过程中暂停一次或者多次,随后再恢复运行,暂停的过程中允许其他的代码执行 这种停止和启动不仅仅控制着generator函数的执行,还允许信息的双向传递。普通函数在开始的时候获取参数,在结束的时候return 一个值,而generator函数可以在yield的时候返回值,并且在下一次启动的时候再传入值。

    generators语法

    每次调用next()方法都会返回一个object对象

    参数x的值设置为5 表达式yield(x+1) 的返回值是6 第二个next(12) 将12作为参数传入,用来代替

    输出结果:hhhhh3

    生成器函数可以有返回值 .value 为yield 后的值  done 为返回的值

  • 相关阅读:
    【原理】【重点】异步回调的一些实现策略
    上下文传递
    洋码头全异步服务框架
    秒杀系统架构优化思路
    从urllib2的内存泄露看python的GC python引用计数 对象的引用数 循环引用
    jvisualvm All-in-One Java Troubleshooting Tool
    小心踩雷,一次Java内存泄漏排查实战
    django 请求处理流程 链路追踪
    存储过程
    Dijkstra's algorithm
  • 原文地址:https://www.cnblogs.com/cy1121/p/8384448.html
Copyright © 2011-2022 走看看