 ECMAScript规范 第三版 中文版JScript。该语言由 Netscape 公司的 Brendan Eich 发明并首先出现在该公司 的 Navigator 2.0 浏览器中。该语言至今已经在所有来自 Netscape 的全部子系列浏览器和从 Internet Explorer3.0 开始所有来自 Microsoft 的浏览器中出现。 该标准的研发起始于 1996 年 11 月。ECMA 标准的首个版本于 1997 年 6 月被 ECMA 公共协 ECMAScript 脚本语言。 2 前言 符合标准的 ECMAScript 实现必须提供并支持本规范中所描述的所有类型,值,对象,属 性,函数,程序语法和语义。 符合这个国际标准的实现应当能解释前言中提到的字符集:Unicode 标准,2.1 版或更新版 本,使用 UCS-2 或 UTF-16 作为被采纳的编码格式的 ISO/IEC 10646-1 第 3 级实现。如果被采 纳的 ISO/IEC 业程序员,语言的一些方面会多少有些不严格。 ECMAScript 从一开始就被设计成一种网页脚本语言(Web scripting language)作为基于网页 的、客户端—服务器端(C/S)构架的建筑师,它能提供一 种机制,用来使浏览器中的网站页面更 加活跃,并展示服务器端的处理情况。ECMAScript 能够为各种主机环境,以及这个文档所描述 的核心脚本编程语言之外任何特定的主机环境,提供基本的脚本编程能力。 ECMAScript0 码力 | 58 页 | 563.06 KB | 1 年前3 ECMAScript规范 第三版 中文版JScript。该语言由 Netscape 公司的 Brendan Eich 发明并首先出现在该公司 的 Navigator 2.0 浏览器中。该语言至今已经在所有来自 Netscape 的全部子系列浏览器和从 Internet Explorer3.0 开始所有来自 Microsoft 的浏览器中出现。 该标准的研发起始于 1996 年 11 月。ECMA 标准的首个版本于 1997 年 6 月被 ECMA 公共协 ECMAScript 脚本语言。 2 前言 符合标准的 ECMAScript 实现必须提供并支持本规范中所描述的所有类型,值,对象,属 性,函数,程序语法和语义。 符合这个国际标准的实现应当能解释前言中提到的字符集:Unicode 标准,2.1 版或更新版 本,使用 UCS-2 或 UTF-16 作为被采纳的编码格式的 ISO/IEC 10646-1 第 3 级实现。如果被采 纳的 ISO/IEC 业程序员,语言的一些方面会多少有些不严格。 ECMAScript 从一开始就被设计成一种网页脚本语言(Web scripting language)作为基于网页 的、客户端—服务器端(C/S)构架的建筑师,它能提供一 种机制,用来使浏览器中的网站页面更 加活跃,并展示服务器端的处理情况。ECMAScript 能够为各种主机环境,以及这个文档所描述 的核心脚本编程语言之外任何特定的主机环境,提供基本的脚本编程能力。 ECMAScript0 码力 | 58 页 | 563.06 KB | 1 年前3
 阮一峰 JavaScript 教程Date 对象 RegExp 对象 JSON 对象 面向对象编程 实例对象与 new 命令 this 关键字 对象的继承 Object 对象的相关方法 严格模式 异步操作 概述 定时器 Promise 对象 DOM 概述 - 2 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《阮一峰 JavaScript 教程》 由 进击的皇虫 使用 书栈(BookStack 考书,应该简明易懂,一目了然,告诉我有哪些注意点,提供代码范 例。如果涉及重要概念,还应该适当讲解。可是大多数时候,现实都不 是如此。找到的资料冗长难懂,抓不住重点,有时还很陈旧,跟不上语 言标准和浏览器的快速发展,且大多数是英文资料。 学习过程中,我做了很多 JavaScript 笔记。多年累积,数量相当庞 大。遇到问题,我首先查自己的笔记,如果笔记里没有,再到网上查, 最后回过头把笔记补全。 JavaScript 语言? 为什么学习 JavaScript? 操控浏览器的能力 广泛的使用领域 易学性 强大的性能 开放性 社区支持和就业机会 实验环境 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script language),指的是它不具备开发操作系统的能力,而是只用来编写 控制其他大型应用程序(比如浏览器)的“脚本”。 JavaScript 也是一种嵌入式(embedded)语言。它本身提供的核0 码力 | 540 页 | 3.32 MB | 10 月前3 阮一峰 JavaScript 教程Date 对象 RegExp 对象 JSON 对象 面向对象编程 实例对象与 new 命令 this 关键字 对象的继承 Object 对象的相关方法 严格模式 异步操作 概述 定时器 Promise 对象 DOM 概述 - 2 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《阮一峰 JavaScript 教程》 由 进击的皇虫 使用 书栈(BookStack 考书,应该简明易懂,一目了然,告诉我有哪些注意点,提供代码范 例。如果涉及重要概念,还应该适当讲解。可是大多数时候,现实都不 是如此。找到的资料冗长难懂,抓不住重点,有时还很陈旧,跟不上语 言标准和浏览器的快速发展,且大多数是英文资料。 学习过程中,我做了很多 JavaScript 笔记。多年累积,数量相当庞 大。遇到问题,我首先查自己的笔记,如果笔记里没有,再到网上查, 最后回过头把笔记补全。 JavaScript 语言? 为什么学习 JavaScript? 操控浏览器的能力 广泛的使用领域 易学性 强大的性能 开放性 社区支持和就业机会 实验环境 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script language),指的是它不具备开发操作系统的能力,而是只用来编写 控制其他大型应用程序(比如浏览器)的“脚本”。 JavaScript 也是一种嵌入式(embedded)语言。它本身提供的核0 码力 | 540 页 | 3.32 MB | 10 月前3
 [试读]15天学会JavaScript - 第 2 章
ECMAScript语法基础 document.write("Hello EcmaScript!"); // 向浏览器输出字符串"Hello EcmaScript!" 22 15 天学会 JavaScript(视频教学版) 2. ECMAScript 代码多行注释 多行注释以“/*”开头、并以“*/”结束,例如: /* * 向浏览器输出字符串"Hello EcmaScript!" */ document.write("Hello ECMAScript 变量弱类型的特点,所以解释程序 会自动为变量创建整数值; 第 04 行代码通过“var”关键字定义了一个变量表达式(var s = i + j;),而表达式中的变 量“i”和“j”正是第 02~03 行代码中定义的,表达式运算的结果则会保存在变量“s”中; 第 05 行代码通过 console.log()函数向浏览器控制台输出调试信息(表达式变量“s”的运 算结果)。 算结果)。 运行测试【代码 2-1】所指定的 HTML 页面,并使用浏览器控制台查看调试信息,页面效 果如图 2.1 所示。在浏览器控制台中输出了【代码 2-1】中第 05 行 JS 代码所定义的调试信息。 图 2.1 ECMAScript 变量声明 2.2.3 改变变量数据类型 我们在前文中介绍了 ECMAScript 变量弱类型的特点,因此 ECMAScript 规范允许改变0 码力 | 52 页 | 3.83 MB | 1 年前3 [试读]15天学会JavaScript - 第 2 章
ECMAScript语法基础 document.write("Hello EcmaScript!"); // 向浏览器输出字符串"Hello EcmaScript!" 22 15 天学会 JavaScript(视频教学版) 2. ECMAScript 代码多行注释 多行注释以“/*”开头、并以“*/”结束,例如: /* * 向浏览器输出字符串"Hello EcmaScript!" */ document.write("Hello ECMAScript 变量弱类型的特点,所以解释程序 会自动为变量创建整数值; 第 04 行代码通过“var”关键字定义了一个变量表达式(var s = i + j;),而表达式中的变 量“i”和“j”正是第 02~03 行代码中定义的,表达式运算的结果则会保存在变量“s”中; 第 05 行代码通过 console.log()函数向浏览器控制台输出调试信息(表达式变量“s”的运 算结果)。 算结果)。 运行测试【代码 2-1】所指定的 HTML 页面,并使用浏览器控制台查看调试信息,页面效 果如图 2.1 所示。在浏览器控制台中输出了【代码 2-1】中第 05 行 JS 代码所定义的调试信息。 图 2.1 ECMAScript 变量声明 2.2.3 改变变量数据类型 我们在前文中介绍了 ECMAScript 变量弱类型的特点,因此 ECMAScript 规范允许改变0 码力 | 52 页 | 3.83 MB | 1 年前3
 Web 开发技术-JavaScript诞生目的 用于表单验证,网速很慢,最好能将服务 器语言负责的表单输入验证操作转为客户 端独立完成,减少客户端 – 服务器数据 交换量,节约大量时间。 1 JavaScript 简史 JavaScript 简史 3 Netscape Navigator 2, 1995 人类首个支持 JavaScript 和 gif 动图的浏览器 VCG JavaScript 2020/4/28 4 浏览器开发商开始致力于将 ECMAScript 作为各自 JavaScript 实现基础。 JavaScript 简史 4 VCG JavaScript 2020/4/28 5 2. JavaScript 和脚本语言 JavaScript 一种高级的,面向对象的脚本语言。 JavaScript 代码可直接嵌入 HTML 文件或使用外部文件,随网页一起传送到客户端浏览器,然 后通过浏览器的解释器来解释执行。 后通过浏览器的解释器来解释执行。 JavaScript 不支持 I/O(如网络、存储和图形),但可以由宿主环境(如浏览器)提供支持。 脚本语言(Scripting language) 是为了缩短传统的“编写、编译、链接、运行”(edit-compile-link-run)过程而创建的计算 机编程语言。 可直接用任何的文本编辑器开发完成。是一种不必事先编译,只要利用适当的解释器 (In0 码力 | 21 页 | 1.02 MB | 1 年前3 Web 开发技术-JavaScript诞生目的 用于表单验证,网速很慢,最好能将服务 器语言负责的表单输入验证操作转为客户 端独立完成,减少客户端 – 服务器数据 交换量,节约大量时间。 1 JavaScript 简史 JavaScript 简史 3 Netscape Navigator 2, 1995 人类首个支持 JavaScript 和 gif 动图的浏览器 VCG JavaScript 2020/4/28 4 浏览器开发商开始致力于将 ECMAScript 作为各自 JavaScript 实现基础。 JavaScript 简史 4 VCG JavaScript 2020/4/28 5 2. JavaScript 和脚本语言 JavaScript 一种高级的,面向对象的脚本语言。 JavaScript 代码可直接嵌入 HTML 文件或使用外部文件,随网页一起传送到客户端浏览器,然 后通过浏览器的解释器来解释执行。 后通过浏览器的解释器来解释执行。 JavaScript 不支持 I/O(如网络、存储和图形),但可以由宿主环境(如浏览器)提供支持。 脚本语言(Scripting language) 是为了缩短传统的“编写、编译、链接、运行”(edit-compile-link-run)过程而创建的计算 机编程语言。 可直接用任何的文本编辑器开发完成。是一种不必事先编译,只要利用适当的解释器 (In0 码力 | 21 页 | 1.02 MB | 1 年前3
 前端开发者指南(2017)而开发 团队里的前端 全能型人才/全栈神话 前端面试 前端开发职位公示 前端开发薪资 前端开发者是如何诞生的 第二部分:学习前端开发 自学 关于互联网/WEB 学习 Web 浏览器 学习域名系统(又叫 DNS) 学习 HTTP/Networks(包括 CORS 和 WebSockets) 学习网页寄存(通称虚拟主机) 学习前端开发 学习用户界面/交互设计 学习 HTML 1.37 1.6.1.38 1.6.2 1.6.2.1 1.6.3 1.6.4 1.7 1.7.1 1.7.2 1.7.3 1.7.4 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON (JavaScript 对象表示法) 学习 JS 模板 学习静态网页生成器 通过JS学习计算机科学 学习前端应用架构 学习数据(例如,JSON)API 的设计 学习 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全 多平台开发学习 导向学习 前端课程 前端开发学习的起点 前端资讯、新闻站和播客 第三部分:前端开发工具 Doc/API 浏览工具 SEO 工具 原型设计和线框图工具0 码力 | 164 页 | 6.43 MB | 1 年前3 前端开发者指南(2017)而开发 团队里的前端 全能型人才/全栈神话 前端面试 前端开发职位公示 前端开发薪资 前端开发者是如何诞生的 第二部分:学习前端开发 自学 关于互联网/WEB 学习 Web 浏览器 学习域名系统(又叫 DNS) 学习 HTTP/Networks(包括 CORS 和 WebSockets) 学习网页寄存(通称虚拟主机) 学习前端开发 学习用户界面/交互设计 学习 HTML 1.37 1.6.1.38 1.6.2 1.6.2.1 1.6.3 1.6.4 1.7 1.7.1 1.7.2 1.7.3 1.7.4 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON (JavaScript 对象表示法) 学习 JS 模板 学习静态网页生成器 通过JS学习计算机科学 学习前端应用架构 学习数据(例如,JSON)API 的设计 学习 学习 Node.js 学习 JS 模块系统 学习模块加载和打包工具 学习包管理工具 学习版本控制 学习构建及任务自动化技术 学习网站性能优化 学习测试 学习无头浏览器 学习离线开发 学习网络/浏览器/应用的安全 多平台开发学习 导向学习 前端课程 前端开发学习的起点 前端资讯、新闻站和播客 第三部分:前端开发工具 Doc/API 浏览工具 SEO 工具 原型设计和线框图工具0 码力 | 164 页 | 6.43 MB | 1 年前3
 2019-2021 美团技术年货 前端篇可用于直接绘制的视图对象 鸿蒙系统的 UI 框架提供了很多常用视图组件(Component),比如按钮、文字、图 片、列表等,但我们需要抛开这些上层组件,获得直接绘制的能力。借助官方 媒体播 放器开发指导 文档,可以发现鸿蒙提供了 SurfaceProvider 类,它管理的 Surface 对象可以用于视频解码后的展示。而 Flutter 渲染与视频上屏从原理上是类似的,因 此我们可以借用 接收到事件之后,会将其打包传 递至引擎层,后者将事件传发给 Flutter 框架层,并完成事件的消费、分发和逻辑处 理。同样,整个流程的大部分工作已经由 Flutter 统一,我们要做的仅仅是在原生容 器上监听用户的输入,并封装成指定格式交给引擎层而已。 在鸿蒙系统上,我们可以借助平台提供的 多模输入 API,实现多种类型事件的监听: flutterComponent.setTouchEventL 集合。区别在于:Flutter Web 重写了 dart:ui 层(黄色部分),利用 DOM、Canvas 对齐了 Flutter Native 的 UI 渲染能力,使得 Flutter 编写的 UI 能够在现代浏览器上正常展示。 此外,得益于 dart2js 这个早已成熟的工具,Dart 逻辑能够很容易的转换为 JavaS- cript,进而在 Web 中被正常运行。 二、面临的挑战 综上所述,我们选择基于0 码力 | 738 页 | 50.29 MB | 1 年前3 2019-2021 美团技术年货 前端篇可用于直接绘制的视图对象 鸿蒙系统的 UI 框架提供了很多常用视图组件(Component),比如按钮、文字、图 片、列表等,但我们需要抛开这些上层组件,获得直接绘制的能力。借助官方 媒体播 放器开发指导 文档,可以发现鸿蒙提供了 SurfaceProvider 类,它管理的 Surface 对象可以用于视频解码后的展示。而 Flutter 渲染与视频上屏从原理上是类似的,因 此我们可以借用 接收到事件之后,会将其打包传 递至引擎层,后者将事件传发给 Flutter 框架层,并完成事件的消费、分发和逻辑处 理。同样,整个流程的大部分工作已经由 Flutter 统一,我们要做的仅仅是在原生容 器上监听用户的输入,并封装成指定格式交给引擎层而已。 在鸿蒙系统上,我们可以借助平台提供的 多模输入 API,实现多种类型事件的监听: flutterComponent.setTouchEventL 集合。区别在于:Flutter Web 重写了 dart:ui 层(黄色部分),利用 DOM、Canvas 对齐了 Flutter Native 的 UI 渲染能力,使得 Flutter 编写的 UI 能够在现代浏览器上正常展示。 此外,得益于 dart2js 这个早已成熟的工具,Dart 逻辑能够很容易的转换为 JavaS- cript,进而在 Web 中被正常运行。 二、面临的挑战 综上所述,我们选择基于0 码力 | 738 页 | 50.29 MB | 1 年前3
 阮一峰 《ECMAScript 6入门》 第三版Netscape 公司,决定将 JavaScript 提交给国际标准化组织ECMA,希望这种语言能够成为国 际标准。次年,ECMA 发布262号标准文件(ECMA-262)的第一版,规定了浏览 器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是1.0版。 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有 两个原因。一是商标,Java 正式通过,成为国际标准。从2000年算起,这时已经 过去了15年。 部署进度 各大浏览器的最新版本,对 ES6 的支持可以查看kangax.github.io/es5-compat- table/es6/。随着时间的推移,支持度已经越来越高了,超过90%的 ES6 语法特性 都实现了。 Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除 了那些默认打 上面命令的输出结果,会因为版本的不同而有所不同。 我写了一个工具 ES-Checker,用来检查各种运行环境对 ES6 的支持情况。访问 ruanyf.github.io/es-checker,可以看到您的浏览器支持 ES6 的程度。运行下面的 命令,可以查看你正在使用的 Node 环境对 ES6 的支持程度。 ECMAScript 6简介 10 $ npm install -g es-checker0 码力 | 679 页 | 2.66 MB | 1 年前3 阮一峰 《ECMAScript 6入门》 第三版Netscape 公司,决定将 JavaScript 提交给国际标准化组织ECMA,希望这种语言能够成为国 际标准。次年,ECMA 发布262号标准文件(ECMA-262)的第一版,规定了浏览 器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是1.0版。 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有 两个原因。一是商标,Java 正式通过,成为国际标准。从2000年算起,这时已经 过去了15年。 部署进度 各大浏览器的最新版本,对 ES6 的支持可以查看kangax.github.io/es5-compat- table/es6/。随着时间的推移,支持度已经越来越高了,超过90%的 ES6 语法特性 都实现了。 Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除 了那些默认打 上面命令的输出结果,会因为版本的不同而有所不同。 我写了一个工具 ES-Checker,用来检查各种运行环境对 ES6 的支持情况。访问 ruanyf.github.io/es-checker,可以看到您的浏览器支持 ES6 的程度。运行下面的 命令,可以查看你正在使用的 Node 环境对 ES6 的支持程度。 ECMAScript 6简介 10 $ npm install -g es-checker0 码力 | 679 页 | 2.66 MB | 1 年前3
 JavaScript极速入门 —— 内核与引擎—— 内核与引擎 主讲人与课程设计:耕耕 浏览器内核 主流浏览器内核 JavaScript 引擎 主流浏览器JavaScript 引擎 浏览器内核与JavaScript 引擎关系 最初内核的概念包括渲染引擎与JS引擎,目前习惯直接称渲染引擎为内核,JS引擎独立。 浏览器内核 渲染引擎 JavaScript引擎 最初状态 浏览器内核 渲染引擎 JavaScript引擎 目前状态 渲染引擎:Rendering Engine,一般习惯将之称为“浏览器内核”,主要功能是解析HTML/CSS进 行渲染页面,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。 JavaScript 引擎:专门处理JavaScript脚本的虚拟机、解释器,用来解释执行js代码。在早期内 核也是包含js引擎的,而现在js引擎越来独立了,可以把它单独提出来。 总结:渲染引擎(浏览器内核)处理html/css,JavaSc ript引擎处理JavaScript代码,有js引擎的 地方就能解析js代码 浏览器 渲染引擎(内核) 解析html/css JavaScript引擎 解析JavaScript代码 JavaScript和java什么关系 JavaScript 在刚诞生的时候,它的名字叫 “LiveScript”。但是因为当时 Java 很流行,所以决定将一种新语 言定位为 Java 的“弟弟”会有助于它的流行。0 码力 | 8 页 | 394.47 KB | 1 年前3 JavaScript极速入门 —— 内核与引擎—— 内核与引擎 主讲人与课程设计:耕耕 浏览器内核 主流浏览器内核 JavaScript 引擎 主流浏览器JavaScript 引擎 浏览器内核与JavaScript 引擎关系 最初内核的概念包括渲染引擎与JS引擎,目前习惯直接称渲染引擎为内核,JS引擎独立。 浏览器内核 渲染引擎 JavaScript引擎 最初状态 浏览器内核 渲染引擎 JavaScript引擎 目前状态 渲染引擎:Rendering Engine,一般习惯将之称为“浏览器内核”,主要功能是解析HTML/CSS进 行渲染页面,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。 JavaScript 引擎:专门处理JavaScript脚本的虚拟机、解释器,用来解释执行js代码。在早期内 核也是包含js引擎的,而现在js引擎越来独立了,可以把它单独提出来。 总结:渲染引擎(浏览器内核)处理html/css,JavaSc ript引擎处理JavaScript代码,有js引擎的 地方就能解析js代码 浏览器 渲染引擎(内核) 解析html/css JavaScript引擎 解析JavaScript代码 JavaScript和java什么关系 JavaScript 在刚诞生的时候,它的名字叫 “LiveScript”。但是因为当时 Java 很流行,所以决定将一种新语 言定位为 Java 的“弟弟”会有助于它的流行。0 码力 | 8 页 | 394.47 KB | 1 年前3
 Hello 算法 1.1.0 JavaScript版多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 要通过动画以图解形式展示,而文字则作为解释与补充。 如果你在阅读本书时,发现某段内容提供了如图 0‑2 所示的动画图解,请以图为主、以文字为辅,综合两者 来理解内容。 图 0‑2 动画图解示例 0.2.3 在代码实践中加深理解 本书的配套代码托管在 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 379 页 | 18.46 MB | 1 年前3 Hello 算法 1.1.0 JavaScript版多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 要通过动画以图解形式展示,而文字则作为解释与补充。 如果你在阅读本书时,发现某段内容提供了如图 0‑2 所示的动画图解,请以图为主、以文字为辅,综合两者 来理解内容。 图 0‑2 动画图解示例 0.2.3 在代码实践中加深理解 本书的配套代码托管在 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 379 页 | 18.46 MB | 1 年前3
 Hello 算法 1.0.0 JavaScript版5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 要通过动画以图解形式展示,而文字则作为解释与补充。 如果你在阅读本书时,发现某段内容提供了如图 0‑2 所示的动画图解,请以图为主、以文字为辅,综合两者 来理解内容。 图 0‑2 动画图解示例 0.2.3 在代码实践中加深理解 本书的配套代码托管在 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为「尾递归 tail recursion」。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 376 页 | 17.57 MB | 1 年前3 Hello 算法 1.0.0 JavaScript版5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 要通过动画以图解形式展示,而文字则作为解释与补充。 如果你在阅读本书时,发现某段内容提供了如图 0‑2 所示的动画图解,请以图为主、以文字为辅,综合两者 来理解内容。 图 0‑2 动画图解示例 0.2.3 在代码实践中加深理解 本书的配套代码托管在 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输 图 2‑4 递归调用深度 在实际中,编程语言允许的递归深度通常是有限的,过深的递归可能导致栈溢出错误。 2. 尾递归 有趣的是,如果函数在返回前的最后一步才进行递归调用,则该函数可以被编译器或解释器优化,使其在空 间效率上与迭代相当。这种情况被称为「尾递归 tail recursion」。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。0 码力 | 376 页 | 17.57 MB | 1 年前3
共 20 条
- 1
- 2













