廖雪峰JavaScript教程2.6 条件判断 2.7 循环 2.8 Map和Set 2.9 iterable 3 函数 3.1 函数定义和调用 3.2 变量作用域 3.3 方法 3.4 高阶函数 3.4.1 map/reduce 3.4.2 filter 3.4.3 sort 3.5 闭包 3.6 箭头函数 3.7 generator 4 标准对象 4.1 Date 4.2 RegExp 4 z = 5; 10. } 11. } JavaScript本身对嵌套的层级没有限制,但是过多的嵌套无疑会大大增加看懂代码的难度。遇到这种 情况,需要把部分代码抽出来,作为函数来调用,这样可以减少代码的复杂度。 以 // 开头直到行末的字符被视为行注释,注释是给开发人员看到,JavaScript引擎会自动忽略: 1. // 这是一行注释 2. alert('hello'); 比较。 另一个例外是 NaN 这个特殊的Number与所有其他值都不相等,包括它自己: 1. NaN === NaN; // false 唯一能判断 NaN 的方法是通过 isNaN() 函数: 1. isNaN(NaN); // true 最后要注意浮点数的相等比较: 1. 1 / 3 === (1 - 2 / 3); // false 这不是JavaScript的设计缺陷。浮0 码力 | 264 页 | 2.81 MB | 10 月前3
JavaScript Promise迷你书(中文版)它是基于并列/并行处理设计的一种编程语言。 现在JavaScript也拥有了这种特性,这就是本书所介绍的JavaScript Promise。 另外,如果说到基于JavaScript的异步处理,我想大多数都会想到利用回调函数。 使用了回调函数的异步处理 ---- getAsync("fileA.txt", function(error, result){ if(error){// 取得失败时的处理 throw Promise 迷你书(中文版) 6 // 取得成功时的处理 }); ---- <1> 传给回调函数的参数为(error对象, 执行结果)组合 Node.js等则规定在JavaScript的回调函数的第一个参数为 Error 对象,这也是它的一个 惯例。 像上面这样基于回调函数的异步处理如果统一参数使用规则的话,写法也会很明了。 但是,这也仅是编码规约而已,即使采用不同的写法也不会出错。 注册这个promise对象执行成功 时和失败时相应的回调函数。 这和回调函数方式相比有哪些不同之处呢? 在使用promise进行一步处理的时候,我们 必须按照接口规定的方法编写处理代码。 也就是说,除promise对象规定的方法(这里的 then 或 catch )以外的方法都是不可以使 用的, 而不会像回调函数方式那样可以自己自由的定义回调函数的参数,而必须严格 遵守固定、统一的编程方式来编写代码。0 码力 | 112 页 | 1010.02 KB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版0. 写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 的。对于以上情况,我们很难仅凭时间复杂度来判定算法效率高低。然而,即使存在这些问题,复杂度分 析仍然是评判算法效率的最有效且常用的方法。 2.2.3. 函数渐近上界 设算法「计算操作数量」为 ?(?) ,其是一个关于输入数据大小 ? 的函数。例如,以下算法的操作数量为 ?(?) = 3 + 2? function algorithm(n) { var a = 1; // +1 a += } ?(?) 是个一次函数,说明时间增长趋势是线性的,因此易得时间复杂度是线性阶。 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号被称为「大 ? 记号 Big‑? Notation」,代表函数 ?(?) 的「渐近上界 asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。0 码力 | 185 页 | 14.70 MB | 1 年前3
2019-2021 美团技术年货 前端篇限制问题: ● 不能在包含 JSX 元素的 map 循环中使用 if 表达式 ● 不能使用 Array#map 之外的方法操作 JSX 数组 ● 不能在 JSX 参数中使用匿名函数 ● 暂不支持在 render() 之外的方法定义 JSX ● 不允许在 JSX 参数 (props) 中传入 JSX 元素 ● 不能在 JSX 参数中使用对象展开符 同时也支持大部分 自定义渲染器完成页面绘制 优势 性能损耗低 无语法限制 劣势 语法限制大 性能损耗大 对比来看,重编译方案有一个严重的问题:语法限制。因为大部分前端开发者们已 经对灵活的语法有一定的依赖性,比如会使用高阶组件、在条件判断的时候写很多 return 等等,这种写法很难在编译过程被准确命中。因此,编译时方案就会制定一些 语法规则来限制开发者的写法。重运行方案则没有语法限制问题,可以随意使用各种 具备基础功能的元素,对应原子 理论中的原子;第二类“业务组件”,类似于商品卡片等,是由“基础控件”组成(比 如商品卡片由“标签控件”与“图片控件”组成),同时“业务组件”还能相互组合, 成为更高阶的“复杂组件”,类似于原子理论中的分子。“业务组件”的组合又是千变 万化的,不同样式的业务组件可以组成类似“商家列表”、“菜品列表”等“模板”, 而“模板”与“基本控件”组合在一起,就成为了“页面”。0 码力 | 738 页 | 50.29 MB | 1 年前3
ECMAScript规范 第三版 中文版.......................................................................................12 4.3.4 构造函数................................................................................................... .......................................................................................55 10.1.1 函数对象................................................................................................. ........................................................................................58 10.2.3 函数代码.................................................................................................0 码力 | 58 页 | 563.06 KB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 问 题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序 函数: ‧ 如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺 畅、性能不错,看上去并没有什么问题。 ‧ 但如果学过算法,我们就会知道内置排序函数的时间复杂度是 ?(? log ?) ;而如果给定的数据是固定 位数的整数(例如学号),那么我们就可以0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.1.0 JavaScript版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 0 章 前言 hello‑algo.com 5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都存在插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 375 页 | 30.68 MB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 Symbol Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator 函数的语法 Generator 函数的异步应用 async 函数 Class 的基本语法 Class 的继承 Decorator => item + 1); // 转码后 input.map(function (item) { return item + 1; }); 上面的原始代码用了箭头函数,Babel 将其转为普通函数,就能在不支持箭头函数 的 JavaScript 环境执行了。 配置文件 .babelrc Babel 的配置文件是 .babelrc ,存放在项目的根目录下。使用 Babel 的第一步, a[6](); // 10 上面代码中,变量 i 是 var 命令声明的,在全局范围内都有效,所以全局只有一 个变量 i 。每一次循环,变量 i 的值都会发生改变,而循环内被赋给数组 a 的 函数内部的 console.log(i) ,里面的 i 指向的就是全局的 i 。也就是说,所 有数组 a 的成员里面的 i ,指向的都是同一个 i ,导致运行时输出的是最后一 轮的 i0 码力 | 679 页 | 2.66 MB | 1 年前3
共 17 条
- 1
- 2













