 阮一峰 《ECMAScript 6入门》 第三版23 1.24 1.25 1.26 1.27 目錄 前言 ECMAScript 6简介 let 和 const 命令 变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 Symbol Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator "latest", "react", "stage-2" ], "plugins": [] } 注意,以下所有 Babel工具和模块的使用,都必须先写好 .babelrc 。 命令行转码 babel-cli Babel提供 babel-cli 工具,用于命令行转码。 它的安装命令如下。 $ npm install } } 上面代码中,使用 babel-node 替代 node ,这样 script.js 本身就不用做任 何转码处理。 babel-register babel-register 模块改写 require 命令,为它加上一个钩子。此后,每当使 用 require 加载 .js 、 .jsx 、 .es 和 .es6 后缀名的文件,就会先用Babel 进行转码。 $0 码力 | 679 页 | 2.66 MB | 1 年前3 阮一峰 《ECMAScript 6入门》 第三版23 1.24 1.25 1.26 1.27 目錄 前言 ECMAScript 6简介 let 和 const 命令 变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 Symbol Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator "latest", "react", "stage-2" ], "plugins": [] } 注意,以下所有 Babel工具和模块的使用,都必须先写好 .babelrc 。 命令行转码 babel-cli Babel提供 babel-cli 工具,用于命令行转码。 它的安装命令如下。 $ npm install } } 上面代码中,使用 babel-node 替代 node ,这样 script.js 本身就不用做任 何转码处理。 babel-register babel-register 模块改写 require 命令,为它加上一个钩子。此后,每当使 用 require 加载 .js 、 .jsx 、 .es 和 .es6 后缀名的文件,就会先用Babel 进行转码。 $0 码力 | 679 页 | 2.66 MB | 1 年前3
 2019-2021 美团技术年货 前端篇相似之处(如下表所示),我们可以从 Android 的实现入手,完成对鸿蒙的移植。 Flutter 在鸿蒙上的适配 如前文所述,要完成 Flutter 在新系统上的移植,我们需要完整实现 Flutter 嵌入层 要求的所有子模块,而从能力支持角度,渲染、交互以及其他必要的原生平台能力 是保证 Flutter 应用能够运行起来的最基本的要素,需要优先支持。接下来会依次进 行介绍。 1. 渲染流程打通 我们再来回顾一下 18 > 2021年美团技术年货 上图为 MTFlutter + Web 架构图,由图可知 Flutter Web 页面要满足投产要求,还 有大量的工作(上图黄色部分所示),主要包括: ● 扩展基础依赖(如:Request、Router、埋点等)在 Web 侧的支持。 ● 完善工程化建设,例如:静态资源优化、构建与部署自动化。 ● 深入滚动性能与页面加载性能优化,使得 Flutter 原有 Native 基础依赖开发的 Plugin,因此并不支持 Web 端。此章节将展开介绍如 何丝滑无感地扩展 MTFlutter 基础依赖在 Web 端的实现。 4.1.1 Flutter Package 分平台编程 在 Flutter 中通过使用 Package 可以创建易于共享的模块化代码。官方强烈推荐使 用 Package 形式管理各种工具方法。在官方定义中 Package 包含以下两种类别:0 码力 | 738 页 | 50.29 MB | 1 年前3 2019-2021 美团技术年货 前端篇相似之处(如下表所示),我们可以从 Android 的实现入手,完成对鸿蒙的移植。 Flutter 在鸿蒙上的适配 如前文所述,要完成 Flutter 在新系统上的移植,我们需要完整实现 Flutter 嵌入层 要求的所有子模块,而从能力支持角度,渲染、交互以及其他必要的原生平台能力 是保证 Flutter 应用能够运行起来的最基本的要素,需要优先支持。接下来会依次进 行介绍。 1. 渲染流程打通 我们再来回顾一下 18 > 2021年美团技术年货 上图为 MTFlutter + Web 架构图,由图可知 Flutter Web 页面要满足投产要求,还 有大量的工作(上图黄色部分所示),主要包括: ● 扩展基础依赖(如:Request、Router、埋点等)在 Web 侧的支持。 ● 完善工程化建设,例如:静态资源优化、构建与部署自动化。 ● 深入滚动性能与页面加载性能优化,使得 Flutter 原有 Native 基础依赖开发的 Plugin,因此并不支持 Web 端。此章节将展开介绍如 何丝滑无感地扩展 MTFlutter 基础依赖在 Web 端的实现。 4.1.1 Flutter Package 分平台编程 在 Flutter 中通过使用 Package 可以创建易于共享的模块化代码。官方强烈推荐使 用 Package 形式管理各种工具方法。在官方定义中 Package 包含以下两种类别:0 码力 | 738 页 | 50.29 MB | 1 年前3
 前端开发者指南(2017)学习数据(例如,JSON)API 的设计 学习 React & Redux 学习渐进式 Web 应用 学习设计 JS API 学习web开发工具 学习命令行的使用 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全 多平台开发学习 数据可视化工具(例如图表) 图形工具(例如 SVG、canvas、webGL) 动画工具 JSON 工具 占位符内容工具 测试工具 前端数据存储工具 (例如客户端的数据存储方案) 模块加载/打包工具 模块/包管理工具 托管工具 项目管理以及代码托管工具 协作与沟通工具 内容管理 托管/API 工具 后端即服务工具 离线工具 安全工具 构建工具 部署工具 4 1.7.38 学习数据(例如,JSON)API 的设计 学习 React & Redux 学习渐进式 Web 应用 学习设计 JS API 学习web开发工具 学习命令行的使用 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 Introduction 8 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全0 码力 | 164 页 | 6.43 MB | 1 年前3 前端开发者指南(2017)学习数据(例如,JSON)API 的设计 学习 React & Redux 学习渐进式 Web 应用 学习设计 JS API 学习web开发工具 学习命令行的使用 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全 多平台开发学习 数据可视化工具(例如图表) 图形工具(例如 SVG、canvas、webGL) 动画工具 JSON 工具 占位符内容工具 测试工具 前端数据存储工具 (例如客户端的数据存储方案) 模块加载/打包工具 模块/包管理工具 托管工具 项目管理以及代码托管工具 协作与沟通工具 内容管理 托管/API 工具 后端即服务工具 离线工具 安全工具 构建工具 部署工具 4 1.7.38 学习数据(例如,JSON)API 的设计 学习 React & Redux 学习渐进式 Web 应用 学习设计 JS API 学习web开发工具 学习命令行的使用 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 Introduction 8 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全0 码力 | 164 页 | 6.43 MB | 1 年前3
 廖雪峰JavaScript教程修改DOM结构 7.3 事件 7.4 动画 7.5 扩展 8 underscore 8.1 Collections 8.2 Arrays 8.3 Functions 8.4 Objects 8.5 Chaining 9 Node.js 9.1 安装Node.js和npm 9.2 第一个Node程序 9.3 模块 9.4 基本模块 9.4.1 fs 9.4.2 stream 这种抽象记法非常强大,因为我们看到 ∑ 就可以理解成求和,而不是还原成低级的加法运算。 函数 抽象 3 函数 - 48 - 本文档使用 书栈(BookStack.CN) 构建 而且,这种抽象记法是可扩展的,比如: 100 ∑(n2+1) n=1 还原成加法运算就变成了: (1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + … + (100 书栈(BookStack.CN) 构建 5.2 原型继承 在传统的基于Class的语言如Java、C++中,继承的本质是扩展一个已有的Class,并生成新的 Subclass。 由于这类语言严格区分类和实例,继承实际上是类型的扩展。但是,JavaScript由于采用原型继承, 我们无法直接扩展一个Class,因为根本不存在Class这种类型。 但是办法还是有的。我们先回顾 Student 构造函数:0 码力 | 264 页 | 2.81 MB | 10 月前3 廖雪峰JavaScript教程修改DOM结构 7.3 事件 7.4 动画 7.5 扩展 8 underscore 8.1 Collections 8.2 Arrays 8.3 Functions 8.4 Objects 8.5 Chaining 9 Node.js 9.1 安装Node.js和npm 9.2 第一个Node程序 9.3 模块 9.4 基本模块 9.4.1 fs 9.4.2 stream 这种抽象记法非常强大,因为我们看到 ∑ 就可以理解成求和,而不是还原成低级的加法运算。 函数 抽象 3 函数 - 48 - 本文档使用 书栈(BookStack.CN) 构建 而且,这种抽象记法是可扩展的,比如: 100 ∑(n2+1) n=1 还原成加法运算就变成了: (1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + … + (100 书栈(BookStack.CN) 构建 5.2 原型继承 在传统的基于Class的语言如Java、C++中,继承的本质是扩展一个已有的Class,并生成新的 Subclass。 由于这类语言严格区分类和实例,继承实际上是类型的扩展。但是,JavaScript由于采用原型继承, 我们无法直接扩展一个Class,因为根本不存在Class这种类型。 但是办法还是有的。我们先回顾 Student 构造函数:0 码力 | 264 页 | 2.81 MB | 10 月前3
 JavaScript Promise迷你书(中文版)是严格相等比较运算符,我们可以看出这三个对象都是互不相同的,这也就证明 了 then 和 catch 都返回了和调用者不同的promise对象。 Figure 6. 我们在对Promise进行扩展的时候需要牢牢记住这一点,否则稍不留神就有可能对错误 的promise对象进行了处理。 如果我们知道了 then 方法每次都会创建并返回一个新的promise对象的话,那么我们 就应该不难理解下面代码中对 ,这个我们在后面再讲。 要想在本章中使用Mocha,我们需要先通过npm来安装Mocha。 $ npm install -g mocha 另外,Assert库我们使用的是Node.js自带的 assert 模块,所以不需要额外安装。 首先,让我们试着编写一个对传统回调风格的异步函数进行测试的代码。 回调函数风格的测试 如果想使用回调函数风格来对一个异步处理进行测试,使用Mocha的话代码如下所 示。 Promise的规定,进行promise对象的变换。 ES6 Promise 里关于promise对象的规定包括在使用 catch 方法,或 使用 Promise.all 进行处理的时候不能出现错误。 Polyfill和扩展类库 在这些Promise的实现类库中,我们这里主要对两种类型的类库进行介绍。 一种是被称为 Polyfill (这是一款英国产品,就是装修刮墙用的腻子,其意义可想而 知 — 译者注)的类库,另一种是即具有0 码力 | 112 页 | 1010.02 KB | 1 年前3 JavaScript Promise迷你书(中文版)是严格相等比较运算符,我们可以看出这三个对象都是互不相同的,这也就证明 了 then 和 catch 都返回了和调用者不同的promise对象。 Figure 6. 我们在对Promise进行扩展的时候需要牢牢记住这一点,否则稍不留神就有可能对错误 的promise对象进行了处理。 如果我们知道了 then 方法每次都会创建并返回一个新的promise对象的话,那么我们 就应该不难理解下面代码中对 ,这个我们在后面再讲。 要想在本章中使用Mocha,我们需要先通过npm来安装Mocha。 $ npm install -g mocha 另外,Assert库我们使用的是Node.js自带的 assert 模块,所以不需要额外安装。 首先,让我们试着编写一个对传统回调风格的异步函数进行测试的代码。 回调函数风格的测试 如果想使用回调函数风格来对一个异步处理进行测试,使用Mocha的话代码如下所 示。 Promise的规定,进行promise对象的变换。 ES6 Promise 里关于promise对象的规定包括在使用 catch 方法,或 使用 Promise.all 进行处理的时候不能出现错误。 Polyfill和扩展类库 在这些Promise的实现类库中,我们这里主要对两种类型的类库进行介绍。 一种是被称为 Polyfill (这是一款英国产品,就是装修刮墙用的腻子,其意义可想而 知 — 译者注)的类库,另一种是即具有0 码力 | 112 页 | 1010.02 KB | 1 年前3
 阮一峰 JavaScript 教程Self 语言(Smalltalk 的一种变种)。 正则表达式:借鉴 Perl 语言。 字符串和数组处理:借鉴 Python 语言。 为了保持简单,这种脚本语言缺少一些关键的功能,比如块级作用域、 模块、子类型(subtyping)等等,但是可以利用现有功能找出解决 办法。这种功能的不足,直接导致了后来 JavaScript 的一个显著特 点:对于其他语言,你需要学习语言的各种功能,而对于 公司 (Java 语言的发明者和所有者)达成协议,后者允许将这种语言叫做 JavaScript。这样一来,Netscape 公司可以借助 Java 语言的声 势,而 Sun 公司则将自己的影响力扩展到了浏览器。 之所以起这个名字,并不是因为 JavaScript 本身与 Java 语言有 多么深的关系(事实上,两者关系并不深,详见下节),而是因为 Netscape 公司已经决定,使用 Java 编写应用程序。类似的项目还 有 Mozilla 的 Firefox OS。 2010年,三个重要的项目诞生,分别是 NPM、BackboneJS 和 RequireJS,标志着 JavaScript 进入模块化开发的时代。 2011年,微软公司发布 Windows 8操作系统,将 JavaScript 作 为应用程序的开发语言之一,直接提供系统支持。 2011年,Google 发布了 Dart 语言,目的是为了结束0 码力 | 540 页 | 3.32 MB | 10 月前3 阮一峰 JavaScript 教程Self 语言(Smalltalk 的一种变种)。 正则表达式:借鉴 Perl 语言。 字符串和数组处理:借鉴 Python 语言。 为了保持简单,这种脚本语言缺少一些关键的功能,比如块级作用域、 模块、子类型(subtyping)等等,但是可以利用现有功能找出解决 办法。这种功能的不足,直接导致了后来 JavaScript 的一个显著特 点:对于其他语言,你需要学习语言的各种功能,而对于 公司 (Java 语言的发明者和所有者)达成协议,后者允许将这种语言叫做 JavaScript。这样一来,Netscape 公司可以借助 Java 语言的声 势,而 Sun 公司则将自己的影响力扩展到了浏览器。 之所以起这个名字,并不是因为 JavaScript 本身与 Java 语言有 多么深的关系(事实上,两者关系并不深,详见下节),而是因为 Netscape 公司已经决定,使用 Java 编写应用程序。类似的项目还 有 Mozilla 的 Firefox OS。 2010年,三个重要的项目诞生,分别是 NPM、BackboneJS 和 RequireJS,标志着 JavaScript 进入模块化开发的时代。 2011年,微软公司发布 Windows 8操作系统,将 JavaScript 作 为应用程序的开发语言之一,直接提供系统支持。 2011年,Google 发布了 Dart 语言,目的是为了结束0 码力 | 540 页 | 3.32 MB | 10 月前3
 Hello 算法 1.1.0 JavaScript版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符集0 码力 | 379 页 | 18.46 MB | 1 年前3 Hello 算法 1.1.0 JavaScript版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符集0 码力 | 379 页 | 18.46 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 JavaScript 版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符集0 码力 | 379 页 | 18.47 MB | 10 月前3 Hello 算法 1.2.0 简体中文 JavaScript 版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了 GB2312 字符集,其收录了 6763 个汉字,基本满足了汉字的 计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。GBK 字符集是在 GB2312 的基础上扩展得到的,它共收录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符集0 码力 | 379 页 | 18.47 MB | 10 月前3
 Hello 算法 1.0.0 JavaScript版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足了汉 字的计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收录 了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符0 码力 | 376 页 | 17.57 MB | 1 年前3 Hello 算法 1.0.0 JavaScript版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 60 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足了汉 字的计算机处理需要。 然而,GB2312 无法处理部分罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收录 了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机技术的蓬勃发展,字符0 码力 | 376 页 | 17.57 MB | 1 年前3
 Hello 算法 1.0.0b5 JavaScript版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 位用于表示数字,数 字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 57 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的字符集「EASCII」。 它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足 了汉字的计算机处理需要。 然而,GB2312 无法处理部分的罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收 录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机的蓬勃发展,字符集与0 码力 | 375 页 | 30.68 MB | 1 年前3 Hello 算法 1.0.0b5 JavaScript版的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 位用于表示数字,数 字是均匀分布的;而由于指数位的存在,浮点数 float 的数值越大,相邻两个数字之间的差值就会趋向越 大。 hello‑algo.com 57 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的字符集「EASCII」。 它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 1980 年发布了「GB2312」字符集,其收录了 6763 个汉字,基本满足 了汉字的计算机处理需要。 然而,GB2312 无法处理部分的罕见字和繁体字。「GBK」字符集是在 GB2312 的基础上扩展得到的,它共收 录了 21886 个汉字。在 GBK 的编码方案中,ASCII 字符使用一个字节表示,汉字使用两个字节表示。 3.4.3 Unicode 字符集 随着计算机的蓬勃发展,字符集与0 码力 | 375 页 | 30.68 MB | 1 年前3
共 14 条
- 1
- 2













