资讯专栏INFORMATION COLUMN

你所不知道的JavaScript(三)

OBKoro1 / 2886人阅读

摘要:的异步函数不会马上执行,而是先注册监听,等到事件触发了,就将这个回调函数压入事件队列中,等待顺序运行的任务队列空了以后,再执行事件队列中的函数。

第五章 语法

{…}一个代码块会返回最后一个语句的结果值,可以用eval()去获得(不建议),{}在不同情况下意思不同,可以是语句块、对象常量、解构赋值或者命名函数参数,在代码块中有一个坑,{}+[]//0,{}是一个空执行块(不执行任何操作),最后+[]将[]强制类型转换为0。[]+{}//”[object object]”。Switch中的判断是一个严格相等的判断,这个一不注意就会出错。
在“&&”和“||”的判断中,前者的优先级高于后者的优先级,而且a&&b里,若a为假值,会返回a的值而不会再往下判断,而a||b里,若a为真值,会返回a的值而不会再往下判断。

第二部分 异步与性能
第一章 异步:现在与未来

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的值。生成器的优点就在于其内部的代码以自然的同步(顺序)方式表达任务的一系列步骤,为异步代码保持了顺序、同步、阻塞的代码模式。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93468.html

相关文章

  • 所不知道同比和环比真正区别

    摘要:给百度百科给的环比定义为环比,统计学术语,是表示连续个统计周期比如连续两月内的量的变化比。二你所不知道的同比环比两种方式的核心区别判断两个数据到底是同比还是环比。 ...

    liujs 评论0 收藏0
  • 所不知道JSON.stringify

    摘要:已经逐渐替代被全世界的开发者广泛使用。函数将一个对象转换成文本化的。不能被文本化的属性会被忽略。和例外情况在数组中,不可被的元素用填充。自从年双十一正式上线,累计处理了亿错误事件,得到了金山软件等众多知名用户的认可。 译者按: 老司机们,你知道JSON.stringify还有第二个和第三个可选参数吗?它们是什么呢? 原文: What you didn’t know about JSO...

    piapia 评论0 收藏0
  • 所不知道JavaScript 分号

    前言 找我请到 掘金 或者 Github自己也维护不过来那么多站点,对不住大家了。

    Caicloud 评论0 收藏0
  • 前端面试所不知道系列

    摘要:请注意是创建一个全局对象的属性,而不是声明了一个全局变量。由于变量声明自带不可删除属性,比较跟,前者是变量声明,带不可删除属性,因此无法被删除后者为全局变量的一个属性,因此可以从全局变量中删除。下期预告前端面试你所不知道系列伪类和伪元素 写在开始 又到了一年的伊始,很多人可能因为各种原因想换一份工作,而找工作难免遇到各种各样头痛的面试题,于是我打算写一个系列,关于面试中最常见或者前端一...

    Julylovin 评论0 收藏0
  • 关于JavaScript对象,所不知道事(一)- 先谈对象

    摘要:对象与属性让我们保持耐心,再梳理一下对象与属性的关系对象是属性的集合,当对象的属性是函数时,我们将其称之为方法。 这篇博文的主要目的是为了填坑,很久之前我发表了一篇名为关于JavaScript对象中的一切(一) — 对象属性的文章,想要谈一谈JavaScript对象,可那时只是贴了一张关于这个主题的思维导图,今天我会针对这一主题进行展开,将JavaScript对象一些平常不太常用的知识...

    mykurisu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<