阮一峰 JavaScript 教程介绍 前言 入门篇 导论 历史 基本语法 数据类型 概述 null,undefined 和布尔值 数值 字符串 对象 函数 数组 运算符 算术运算符 比较运算符 布尔运算符 二进制位运算符 其他运算符,运算顺序 语法专题 数据类型的转换 错误处理机制 编程风格 console 对象与控制台 标准库 Object 对象 属性描述对象 Array CN) 构建 基本语法 JavaScript 的基本语法 语句 变量 概念 变量提升 标识符 注释 区块 条件语句 if 结构 if…else 结构 switch 结构 三元运算符 ?: 循环语句 while 循环 for 循环 do…while 循环 break 语句和 continue 语句 标签(label) 参考链接 JavaScript 程序的执行单位为行(line),也就是一行一行地执 书栈(BookStack.CN) 构建 等运算符( === )和相等运算符( == )。尤其是赋值表达式不具有 比较作用。 1. var x = 1; 2. var y = 2; 3. if (x = y) { 4. console.log(x); 5. } 6. // "2" 上面代码的原意是,当 x 等于 y 的时候,才执行相关语句。但是, 不小心将严格相等运算符写成赋值表达式,结果变成了将0 码力 | 540 页 | 3.32 MB | 10 月前3
阮一峰 《ECMAScript 6入门》 第三版ES2015)。2016年6月,小幅修订的《ECMAScript 2016标 准》(简称 ES2016)如期发布,这个版本可以看作是 ES6.1 版,因为两者的差异 非常小(只新增了数组实例的 includes 方法和指数运算符),基本上是同一个标 准。根据计划,2017年6月发布 ES2017 标准。 因此,ES6 既是一个历史名词,也是一个泛指,含义是5.1版以后的 JavaScript 的 下一代标准,涵盖了E undeclared_variable // "undefined" 上面代码中, undeclared_variable 是一个不存在的变量名,结果返 回“undefined”。所以,在没有 let 之前, typeof 运算符是百分之百安全的,永 远不会报错。现在这一点不成立了。这样的设计是为了让大家养成良好的编程习 惯,变量一定要在声明之后使用,否则就报错。 有些“死区”比较隐蔽,不太容易发现。 function 'b'] = ['a']; // x='a', y='b' let [x, y = 'b'] = ['a', undefined]; // x='a', y='b' 注意,ES6 内部使用严格相等运算符( === ),判断一个位置是否有值。所以, 如果一个数组成员不严格等于 undefined ,默认值是不会生效的。 let [x = 1] = [undefined]; x // 1 let0 码力 | 679 页 | 2.66 MB | 1 年前3
ECMAScript规范 第三版 中文版URIError(唯一资源定位符错误)。 ECMAScript 还定义了一个内置运算符(operators)集合。严格地说,它们可能不是函数或方 法。ECMAScript 运算符包含了各种各样的操作:乘法运算符,加法运算符,位移运算符,关系 运算符,相等关系运算符,二元位操作运算符,二元逻辑运算符,分配运算符,逗号运算符。 ECMAScript 语法被特意设计成类似 Java 的语法。ECMAScript 行结束符、注释或空白中的一个。源代码文本被从左到右扫描,重复地把最长的可能的 字符序 列作为下一个输入元素。 词法文法中有两个目标符。符号输入分隔元素在其它语法文法中上下文中可以是一个除号 (/) 或除法赋值(/=)运算符。符号输入元素正则表达式在其它语法文法上 下文中使用。 需要注意的是,除号和正则表达式常量存在于语法文法中的上下文中,且都被语法文法允 许;不论如 何,在斜线号不被识别为正则表达式常量的开始这一情况下,词法文法使用输入分 opt ; Throw 语句 : throw [no 行结 束符 here] 表达式 ; 这些非严格产生式的实际效果如下所示: • 若遇到托肯 ++ 或 -- ,解析器将视其为一个后缀运算符时,且在提前托肯与托肯 ++ 或 -- 之间有至少一个行结束符,则在托肯 ++ 或 -- 前自动插入一个分号。 • 若遇到托肯 continue, break, return, 或 throw,且在下一个托肯之前遇到一个0 码力 | 58 页 | 563.06 KB | 1 年前3
[试读]15天学会JavaScript - 第 2 章
ECMAScript语法基础 1.2 区分大小写 ECMAScript 语法规定对字母大小写是敏感的,也就是区分大小写的,这点是与 Java 语法 一致的。ECMAScript 语法区分大小写的规定适用于变量、函数名、运算符及其他一切代码。 比如变量 id 与 Id 是不同的;同样,函数 getElementById()与 getElementbyID()也是不同的,而 且 getElementbyID()是无效函数。 的一个集合”,其中每种原始类型均定义了其所包含值的范围及其字面量的表示形式。 ECMAScript 语法提供“typeof”运算符来判断一个值是否在某种类型的范围内。设计人 员不但可以用该运算符判断一个值是否表示一种原始类型,还可以判断出其具体表示哪种原始 类型。在 JS 脚本中使用“typeof”运算符将返回下列值之一: � undefined:如果变量是 Undefined 类型的会返回该类型; � 型在页面中的输出结果; 第 03 行代码直接在浏览器控制台窗口中输出了“typeof undefined”,目的是看一下通过 “typeof”运算符操作后的 Undefined 类型在页面中的输出效果。 页面效果如图 2.5 所示。Undefined 类型和通过“typeof”运算符操作后的 Undefined 类型, 在控制台中的输出结果均是“undefined”。 图 2.5 Undefined0 码力 | 52 页 | 3.83 MB | 1 年前3
廖雪峰JavaScript教程true || false; // 这个||语句计算结果为true 3. false || true || false; // 这个||语句计算结果为true ! 运算是非运算,它是一个单目运算符,把 true 变成 false , false 变成 true : 1. ! true; // 结果为false 2. ! false; // 结果为true 3. ! (2 > 5); 当我们对Number做比较时,可以通过比较运算符得到一个布尔值: 1. 2 > 5; // false 2. 5 >= 2; // true 3. 7 == 7; // true 实际上,JavaScript允许对任意数据类型做比较: 1. false == 0; // true 2. false === 0; // false 要特别注意相等运算符 == 。JavaScript在设计时,有两种比较运算符: 第一种是 小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值: 1. Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true 比较运算符 null和undefined 2.2 数据类型和变量 - 18 - 本文档使用 书栈(BookStack.CN) 构建 null 表示一个“空”的值,它和 0 以及空字符串 '' 不同,0 码力 | 264 页 | 2.81 MB | 10 月前3
Hello 算法 1.1.0 JavaScript版性能可能劣化,因此被视为负面属性;而如果最佳时间复杂度优于平均时间复杂度,则被视为正面属性。 是否基于比较:基于比较的排序依赖比较运算符(<、=、>)来判断元素的相对顺序,从而排序整个数组, 理论最优时间复杂度为 ?(? log ?) 。而非比较排序不使用比较运算符,时间复杂度可达 ?(?) ,但其通用性 相对较差。 11.1.2 理想排序算法 运行快、原地、稳定、正向自适应、通用性好。显然 第二步:找出最优子结构,进而推导出状态转移方程 本题与完全背包问题的状态转移方程存在以下两点差异。 第 14 章 动态规划 hello‑algo.com 331 ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 出目标金额,因此使 用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换问题 II 从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符串的最少编辑步数,编辑操作包括添加、删除、替换。 ‧ 编辑距离问题的状态定义为将0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版减少计算量,达到更优的时间效率。自适应排序 算法的最佳时间复杂度通常优于平均时间复杂度。 是否基于比较:基于比较的排序依赖比较运算符(<、=、>)来判断元素的相对顺序,从而排序整个数组, 理论最优时间复杂度为 ?(? log ?) 。而非比较排序不使用比较运算符,时间复杂度可达 ?(?) ,但其通用性 相对较差。 11.1.2 理想排序算法 运行快、原地、稳定、自适应、通用性好。显然, 第二步:找出最优子结构,进而推导出状态转移方程 本题与完全背包问题的状态转移方程存在以下两点差异。 第 14 章 动态规划 www.hello‑algo.com 331 ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 出目标金额,因此使 用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换问题 II 从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符串的最少编辑步数,编辑操作包括添加、删除、替换。 ‧ 编辑距离问题的状态定义为将0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0b5 JavaScript版性能可能劣化,因此被视为负面属性;而如果最佳时间复杂度优于平均时间复杂度,则被视为正面属性。 是否基于比较:「基于比较的排序」依赖于比较运算符(<、=、>)来判断元素的相对顺序,从而排序整个 数组,理论最优时间复杂度为 ?(? log ?) 。而「非比较排序」不使用比较运算符,时间复杂度可达 ?(?) , 但其通用性相对较差。 11.1.2 理想排序算法 运行快、原地、稳定、正向自适应、通用性好。 二维 ?? 表的尺寸为 (? + 1) × (??? + 1) 。 第二步:找出最优子结构,进而推导出状态转移方程 本题与完全背包的状态转移方程存在以下两个差异。 ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 。从求“不超过”背包容量到求“恰好”凑出目标金额,因此使用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换 II 问题从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 第 14 章 动态规划 hello‑algo.com 346 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版性能可能劣化,因此被视为负面属性;而如果最佳时间复杂度优于平均时间复杂度,则被视为正面属性。 是否基于比较:「基于比较的排序」依赖比较运算符(<、=、>)来判断元素的相对顺序,从而排序整个数 组,理论最优时间复杂度为 ?(? log ?) 。而「非比较排序」不使用比较运算符,时间复杂度可达 ?(?) ,但 其通用性相对较差。 11.1.2 理想排序算法 运行快、原地、稳定、正向自适应、通用性好。显 第二步:找出最优子结构,进而推导出状态转移方程 第 14 章 动态规划 hello‑algo.com 331 本题与完全背包问题的状态转移方程存在以下两点差异。 ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 出目标金额,因此使 用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换问题 II 从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符串的最少编辑步数,编辑操作包括添加、删除、替换。 ‧ 编辑距离问题的状态定义为将0 码力 | 376 页 | 17.57 MB | 1 年前3
JavaScript 正则表达式迷你书 老姚 - v1.1capturing groups 非捕获分组 non-capturing groups 分支结构 alternations 反向引用 back references 回溯 backtracks 运算符 operators JavaScript 正则表达式迷你书 术语中英文对照表 | 第 82 页 优先级 priority level 修饰符 flags 全局匹配修饰符 global flag0 码力 | 89 页 | 3.42 MB | 11 月前3
共 12 条
- 1
- 2













