第五章 语法es6
{…}一个代码块会返回最后一个语句的结果值,能够用eval()去得到(不建议),{}在不一样状况下意思不一样,能够是语句块、对象常量、解构赋值或者命名函数参数,在代码块中有一个坑,{}+[]//0,{}是一个空执行块(不执行任何操做),最后+[]将[]强制类型转换为0。[]+{}//”[object object]”。Switch中的判断是一个严格相等的判断,这个一不注意就会出错。
在“&&”和“||”的判断中,前者的优先级高于后者的优先级,并且a&&b里,若a为假值,会返回a的值而不会再往下判断,而a||b里,若a为真值,会返回a的值而不会再往下判断。编程
第二部分 异步与性能
第一章 异步:如今与将来promise
JS是一门异步单线程语言,这是为了在用户交互时不会出现假死状况,优化用户体验。没有了并行就少了不少繁琐的状态,而利用异步编程模拟并发又可让js效率提升,js有如今执行的函数,也有将来执行的函数。js的异步函数不会立刻执行,而是先注册监听,等到事件触发了,就将这个回调函数压入事件队列中,等待顺序运行的任务队列空了之后,再执行事件队列中的函数。并发
第二章 回调异步
咱们人类的大脑都适应了顺序的作每个动做,因此能够看作相似于单线程运行的事件循环队列,就像js引擎同样。因为异步编程,一不当心js就容易造成回调地狱,并且回调中缺少顺序性和可信任性容易形成控制反转,回调函数是js异步的基本单元,但是随着业务的发展和推动,复杂度愈来愈高,所以须要一种更同步、更顺序、更阻塞的方式来表达异步。异步编程
第三章 Promise函数
Promise提供了一种解决方式去处理如今值和将来值,每次执行promise的返回值都是一个promise对象,这样就意味着咱们能够链式去调用,它有三种状态,状态只能改变一次,以后就不能再改变。Promise有三种状态决议,完成和拒绝,Promise对象能够传入两个参数resolve和reject,分别会调用两个函数,决议和拒绝函数。性能
第四章 生成器优化
在es6中提出了生成器generator的概念,这意味着代码能够在运行期间被暂停,而后等待命令继续往下执行,这种交替的暂停和恢复是合做性的而不是抢占性的。Function *foo(){},这就是一个生成器的声明,在函数里若是碰到了yield就会暂停执行,而后咱们能够用next()去命令它往下运行,其中还能传参数,参数由对应位置的yield接收,而要启动生成器,咱们首先得执行一次next()第一个next传任何参数都会被默认视为undefined,next()还包含了一个value属性,储存的是下一个位置的yield的值。生成器的优势就在于其内部的代码以天然的同步(顺序)方式表达任务的一系列步骤,为异步代码保持了顺序、同步、阻塞的代码模式。线程