阮一峰 《ECMAScript 6入门》 第三版babel-register 使用时,必须首先加载 babel-register 。 require("babel-register"); require("./index.js"); 然后,就不需要手动对 index.js 转码了。 需要注意的是, babel-register 只会对 require 命令加载的文件转码,而不会 对当前文件转码。另外,由于它是实时转码,所以只适合在开发环境使用。 规定暂时性死区和 let 、 const 语句不出现变量提升,主要是为了减少运 行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的 错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。 总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存 在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该 变量。 不允许重复声明 log('I am inside!'); } } f(); }()); // Uncaught TypeError: f is not a function 考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需 要,也应该写成函数表达式,而不是函数声明语句。 let 和 const 命令 36 // 函数声明语句 { let a = 'secret';0 码力 | 679 页 | 2.66 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版. . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 重要专有名词及其英文翻译会用「」 括号标注,例如「数组 array」 。建议记住它们,以便阅读文献。 ‧ 专有名词和有特指含义的词句会使用“引号” 标注,以避免歧义。 ‧ 重要名词、重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算 法的复杂度分析。 2.2 迭代与递归 在算法中,重复执行0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版. . . . . . . . . . . . . . . . . . . . . 51 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . hello‑algo.com 4 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,建议可以先跳过。 ‧ 专有名词和有特指含义的词句会使用“双引号” 标注,以避免歧义。 ‧ 重要专有名词及其英文翻译会用「」 括号标注,例如「数组 array」 。建议记住它们,以便阅读文献。 ‧ 加粗的文字 表示重点内容或总结性语句,这类文字值得特别关注。 ‧ 当涉及到编程语言之间不一致的名词时,本书均以 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算 法的复杂度分析。 2.2 迭代与递归 在数据结构与算法中0 码力 | 375 页 | 30.68 MB | 1 年前3
2019-2021 美团技术年货 前端篇packages、classes、functions 等,很大程度上减少了包体积。 但这些 SDK 中仍然存在一些能被进一步优化的代码。 以 Flutter Framework 为例,由于它是全平台公用的模块,因此不可避免地存在各 平台的兼容逻辑(通常以 if-else、switch 等条件判断形式出现),而这部分代码是不 能被 Tree-Shaking 剔除的,我们观察如下的代码: // FileName: 如前文所述,美团外卖商家业务大部分都是双端对齐的。为了实现提效的最大化,我 们对 FlutterWeb 的多平台适配能力进行加强,实现了 FlutterWeb 在 PC 侧的复用。 在 PC 适配过程中,我们不可避免地需要书写双端的兼容代码,如:为了实现在列表 页面中对卡片组件的复用。为此我们开发了一个适配工具 ResponsiveSystem,分 别传入 PC 和 App 的各端实现,内部会区分平台完成适配: 根据代码快照编译生成 PC 和 App 两套 JS 产物,并进行资源隔离。而对于 images、fonts 等公用资源,我们将其打入 common 目录。 通过这样的方式,我们去除了各自平台的无用代码,避免了 PC 适配过程中引起的包 体积问题。依然以美团外卖商家课堂业务(6 个页面)为例,接入分平台打包后,单 平台代码体积减小 100KB 左右。 图 22 效果展示 4.5 图标字体精简 当访问0 码力 | 738 页 | 50.29 MB | 1 年前3
廖雪峰JavaScript教程world'; 6. alert(abc); 运行代码,如果浏览器报错,请修复后再运行。如果浏览器不报错,说明你的浏览器太古老了,需要尽 快升级。 不用 var 申明的变量会被视为全局变量,为了避免这一缺陷,所有的JavaScript代码都应该使用 strict模式。我们在后面编写的JavaScript代码将全部采用strict模式。 原文: https://wizardforcel.gitbooks for … in 循环有何区别? for … in 循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个 Array 数组实际上也 是一个对象,它的每个元素的索引被视为一个属性。 当我们手动给 Array 对象添加了额外的属性后, for … in 循环将带来意想不到的意外效果: iterable 2.9 iterable - 45 - 本文档使用 书栈(BookStack.CN) null); // 返回9 传入的参数比定义的少也没有问题: 1. abs(); // 返回NaN 此时 abs(x) 函数的参数 x 将收到 undefined ,计算结果为 NaN 。 要避免收到 undefined ,可以对参数进行检查: 1. function abs(x) { 2. if (typeof x !== 'number') { 3. throw0 码力 | 264 页 | 2.81 MB | 10 月前3
Hello 算法 1.1.0 JavaScript版. . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 ‧ 重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算 法的复杂度分析。 2.2 迭代与递归 在算法中,重复执行0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版. . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 ‧ 重点内容和总结性语句会 加粗,这类文字值得特别关注。 ‧ 有特指含义的词句会使用“引号”标注,以避免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习数据结构与算法之前,先对复杂度分析建立初步的了解,以便能够完成简单算 法的复杂度分析。 2.2 迭代与递归 在算法中,重复执行0 码力 | 379 页 | 18.47 MB | 10 月前3
阮一峰 JavaScript 教程不小心将严格相等运算符写成赋值表达式,结果变成了将 y 赋值给变 量 x ,再判断变量 x 的值(等于2)的布尔值(结果为 true )。 这种错误可以正常生成一个布尔值,因而不会报错。为了避免这种情 况,有些开发者习惯将常量写在运算符的左边,这样的话,一旦不小心 将相等运算符写成赋值运算符,就会报错,因为常量不能被赋值。 1. if (x = 2) { // 不报错 2. if (2 持两字节的字符,不支持四字节的字符。这是因为 JavaScript 第一 版发布的时候,Unicode 的码点只编到 U+FFFF ,因此两字节足够表 示了。后来,Unicode 纳入的字符越来越多,出现了四字节的编码。 但是,JavaScript 的标准此时已经定型了,统一将字符长度限制在 两字节,导致无法识别四字节的字符。上一节的那个四字节字符 ? , 浏览器会正确识别这是一个字符,但是 JavaScript ASCII 码0到31的符 号都无法打印出来,这时可以使用 Base64 编码,将它们转成可以打 Base64 转码 字符串 - 91 - 本文档使用 书栈(BookStack.CN) 构建 印的字符。另一个场景是,有时需要以文本格式传递二进制数据,那么 也可以使用 Base64 编码。 所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、 a-z、 + 和 /0 码力 | 540 页 | 3.32 MB | 10 月前3
JavaScript Promise迷你书(中文版)Node.js等则规定在JavaScript的回调函数的第一个参数为 Error 对象,这也是它的一个 惯例。 像上面这样基于回调函数的异步处理如果统一参数使用规则的话,写法也会很明了。 但是,这也仅是编码规约而已,即使采用不同的写法也不会出错。 而Promise则是把类似的异步处理对象和处理规则进行规范化, 并按照采用统一的接口 来编写,而采取规定方法之外的写法都会出错。 下面是使用了Promise进行异步处理的一个例子 如果想在将来某时刻调用异步回调函数的话,可以使用 setTimeout 等异步API。 — David Herman Effective JavaScript 前面我们看到的 promise.then 也属于此类,为了避免上述中同时使用同步、异步调用 可能引起的混乱问题,Promise在规范上规定 Promise只能使用异步调用方式 。 24 http://effectivejs.com/ JavaScript Promise log('DOM fully loaded and parsed'); }); console.log('==Starting=='); 由于Promise保证了每次调用都是以异步方式进行的,所以我们在实际编码中不需要调 用 setTimeout 来自己实现异步调用。 Promise#then 在前面的章节里我们对Promise基本的实例方法 then 和 catch 的使用方法进行了说 明。0 码力 | 112 页 | 1010.02 KB | 1 年前3
[试读]15天学会JavaScript - 第 2 章
ECMAScript语法基础 的变量(也称为弱类型)。 因此,ECMAScript 变量可以初始化为任意类型的值,且可以随时改变变量的数据类型。当然, 我们不建议随意改变变量的数据类型,建议初始化成什么类型就一直沿用该类型,避免不必要 的麻烦。 2.2.2 变量的声明 ECMAScript 规范中规定通过“var”(单词 variable 的缩写)关键字来定义声明的变量, 当然也可以不使用“var”关键字。一 String(字符串)。String 类 型与前几种原始类型的区别之处在于其是唯一没有固定大小的原始类型。我们可以用字符串存 储 0 或更多的 Unicode 字符(Unicode 是一种国际通用字符集标准,又称为统一字符编码)。 String 类型字符串中的每个字符都有固定的位置,首字符从位置标记 0 开始,第二个 字符在位置标记 1 处,依此类推。因此,字符串中的最后一个字符的位置标记一定是字符 串的长度减 1。 语法中定义的一些特殊字符串,详见表 2-2,这些特殊字符串 在某些特定环境下非常有用。 表 2-2 ECMAScript 特殊字符串 编码 描述 \n 换行 \b 空格 \t 制表符 47 第 2 章 ECMAScript 语法基础 (续表) 编码 描述 \r 回车 \\ 反斜杠 \' 单引号 \" 双引号 下面,就看一段使用0 码力 | 52 页 | 3.83 MB | 1 年前3
共 15 条
- 1
- 2













