第十一章 Promise 与异步函数
Promise Promise 是 ES6 新增的引用类型,可以通过 new 操作符来实例化。创建新 promise 时需要传入函数作为参数 promise 基础promise 是一个有状态的对象,可以处于以下3种状态之一: 待定(pending) 兑现(fulfilled,有时也称为“解决”,resolved) 拒绝(rejected) promise 状态落定后不能再修改,即状态不可逆promise 状态是私有的,不能直接通过 JavaScript 检测到,也不能被外部 JavaScript 代码修改 每个 promise 只要状态落定,就会有一个私有的内部值,该值包含原始值或对象的不可修改的引用。默认值为 undefined。 控制 promise 状态的转换是通过调用它的两个函数参数实现的。这两个参数通常被命名为 resolve() 和 reject()。调用 resolve() 会把状态切换为兑现,调用 reject() 会把状态切换为拒绝,同时会抛出错误 为避免 promise 卡在待定状态,可以添加一个定时退出功能 1234let p = new Promi...
第十章 函数
函数实际上是对象。每个函数都是 Function 类型的实例,而 Function 也有属性和方法,跟其他引用类型一样。因为函数是对象,所以函数名就是指向函数对象的指针,而且不一定与函数本身紧密绑定 定义函数的方式 函数表达式 123let sum = function(num1, num2){ return num1 + num2}; // 函数表达式与任何变量初始化语句一样,末尾要有分号 箭头函数 12345let sum = (num1, num2) => { return mun1 + num2}; // 函数表达式与任何变量初始化语句一样,末尾要有分号<!-- 箭头函数不能使用 arguments、super 和 new.target,也不能用作构造函数,也没有 prototype 属性 --> 函数声明 123function sum(num1, num2){ return num1 + num2} // 函数定义最后没有分号 使用构造函数(不推荐) 1le...
svg
基本结构一个简单示例: 123456789101112<svg version="1.1" baseProfile="full" width="300" height="200" xmlns="http://www.w3.org/2000/svg"> <rect width="100%" height="100%" fill="red" /> <circle cx="150" cy="100" r="80" fill="green" /> <text x="150" y="125" font-size="60" text-anchor="middle" fill="white"...
运算符优先级
结合性左结合:相当于把左边的子表达式加上小括号右结合:相当于把右边的子表达式加上小括号 1233+10*2 // 23(3+10)*2 // 26 -> 左结合3+(10*2) // 23 这里的括号是多余的 -> 右结合 赋值运算符是右结合的,所以可以像下面这样写 1a = b = 5 // 相当于 a = ( b = 5 ) 分组和短路在下表中,分组具有最高优先级,然而,这并不意味着总是优先对分组内的表达式进行求值,尤其是涉及短路时 常见短路例子如下: 代码示例 说明 a || (b * c) 首先对 a 求值,如果 a 为真值则直接返回 a a && (b < c) 首先对 a 求值,如果 a 为虚值则直接返回 a a ?? (b || c) 首先对 a 求值,如果 a 不是 null 或 undefined 则直接返回 a a?.b.c 首先对 a 求值,如果 a 是 null 或 undefined 则直接返回 undefined 123 > 2 && 2 > 1 // tr...
电脑安装多版本nodejs
第一步 卸载电脑上已安装的 node卸载方法:开始 - 设置 - 应用,找到 node 点击卸载 第二步 安装 nvm点击 下载 nvm下载完成后,双击运行安装,安装完成后,打开命令行,运行 nvm 命令,如果显示如下,则表示安装成功 nvm 常用命令: nvm arch:显示 node 运行在 32 位还是 64 位 nvm install <version> [arch]:安装 node,version 指定版本号或者 latest(最新稳定版);可选参数 arch 指定安装 32 位还是 64 位,默认是系统位数 nvm list [available]:显示已安装列表。可选参数 available,显示可安装的所有版本。list 可简化为 ls nvm on:开启 node.js 版本管理 nvm.off:关闭 node.js 版本管理 nvm proxy [url]:设置下载代理。没有可选参数 url 的话,将显示当前代理。将 url 设置为 none 将移除代理 nvm node_mirror [url]:设置 node 镜像。如果不写 url,则使用默...
Object 原型方法
静态方法对象操作Object.create()语法: Object.create(proto, [propertiesObject]) 作用: 创建一个新对象,且新对象的原型为 proto 参数: proto:新创建对象的原型对象;如果 proto 参数不是 null 或非原始包装对象,则抛出 TypeError 异常 propertiesObject:可选参数。如果该参数不为 undefined,则该对象的自有可枚举属性将为新创建的对象添加指定的属性值和对象的属性描述符 -> 例子 返回值: 一个新对象,且该对象的原型指向 proto 原对象是否改变: 否。(因为这是生成对象的方法,并没有原对象) Object.assign()语法: Object.assign(target, source) 作用: 用于将所有可枚举属性的值从一个或多个源对象分配到目标对象 参数: target:目标对象 source:源对象 返回值: &...
css - nth
:nth-child()语法: 123el:nth-child(num){ style} 元素 el 的父元素的第 num 个 且为 el 的子元素 例子: 123456789<div> <p>1</p> <div>2</div> <p>3</p></div>p:nth-child(2){ color: red;} 此样式是不会生效的,因为 p 的父元素的第二个子元素是 div,不是 p,不匹配,所以不生效 num 的可选值: odd 奇数行 even 偶数行 具体数字,如1、2、3…… an+b n=0、1、2、3…… 0n+3 表示匹配第三个 2n+0 表示2的倍数个,相当于 even 3n+4 匹配位置为4、7、10…… 0n+1 同 :first-child :first-child语法: 123el:first-child{ style} 元素 el 的所有兄弟元素中 第一个 且为...
Sass 学习笔记
Sass 变量Sass 中,变量以 $ 开头,后跟变量名 12345678$main-fonts: Arial, sans-serif;$headings-color: green;<!-- 使用 -->h1{ font-family: $main_fonts; color: $headings-color;} 在 Sass 中,$main-fonts 和 $main_fonts 指向的是同一个变量 默认值 !default一般情况下,反复声明一个变量,以最后声明的那个变量的值为准。如果想实现一个功能:即 该变量在此处没有被声明的话,就用该变量的值;如果被声明过的话,就用声明过的值,此时可以用 !default 12345import 'sassFile'$fancybox-width: 400px !default;.fancybox { width: $fancybox-width;} 以上代码,如果导入的文件中声明了 $fancybox-width 变量,则使用导入文件中该变量的值,如果没...
英雄迟暮
“我前后行意,於心未曾有所负也。假令死而有灵,子脩若问‘我母所在’,我将何辞以答!” —— 曹操 “过河,过河,过河” —— 宗泽
第七章 迭代器与生成器
迭代器模式迭代器模式描述了一个方案:可以把有些结构称为 “可迭代对象”(iterable),因为它们实现了正式的 Iterable 接口,而且可以通过迭代器 Iterator 消费 可迭代对象不一定是集合对象,也可以是具有类似数组行为的其他数据结构,如下的计算循环: 123for(let i=0;i<10;i++){ console.log(i)} 可迭代协议实现 Iterable 接口(可迭代协议)要求同时具备两种能力: 支持迭代的自我识别能力 创建实现 Iterator 接口的对象的能力在ECMAScript中,必须暴露一个属性作为 “默认迭代器”,而且这个属性必须使用特殊的 Symbol.iterator 作为键。这个默认迭代器属性必须引用一个迭代器工厂函数,调用这个工厂函数必须返回一个新迭代器 很多内置类都实现了 Iterable 接口 字符串 数组 映射 集合 arguments 对象 NodeList 等 DOM 集合类型 检查是否存在默认迭代器属性可以暴露这个工厂函数: 1234567891011let num = 1;let ...








