Microsoft Word - 第3章.doc
|
|
|
- 安双 诸
- 9 years ago
- Views:
Transcription
1 第 3 章 JavaScript 基 础 JS 即 JavaScript, 属 于 网 络 的 脚 本 语 言,JavaScript 被 数 百 万 计 的 网 页 用 来 改 进 设 计 验 证 表 单 检 测 浏 览 器 创 建 cookies, 以 及 更 多 应 用 下 面 学 习 JavaScript 的 相 关 知 识 本 章 主 要 内 容 : JavaScript 简 介 JavaScript 基 础 流 程 控 制 语 句 函 数 的 定 义 与 调 用 事 件 处 理 常 用 对 象 DOM 技 术 异 常 控 制 语 句 3.1 JavaScript 简 介 JavaScript 是 一 种 由 Netscape 的 LiveScript 发 展 而 来 的 原 型 化 继 承 的 面 向 对 象 的 动 态 类 型 的 区 分 大 小 写 的 客 户 端 脚 本 语 言, 主 要 目 的 是 为 了 解 决 服 务 器 端 语 言, 如 Perl, 遗 留 的 速 度 问 题, 为 客 户 提 供 更 流 畅 的 浏 览 效 果 当 时 服 务 端 需 要 对 数 据 进 行 验 证, 由 于 网 络 速 度 相 当 缓 慢, 只 有 28.8kbps, 验 证 步 骤 浪 费 时 间 太 多 于 是,Netscape 的 浏 览 器 Navigator 加 入 了 JavaScript, 提 供 了 数 据 验 证 的 基 本 功 能 JavaScript 既 是 一 种 描 述 性 语 言, 也 是 一 种 基 于 对 象 (Object) 和 事 件 驱 动 (Event Driven), 并 具 有 安 全 性 能 的 脚 本 语 言 使 用 它 的 目 的 是 与 HTML 超 文 本 标 记 语 言 一 起 实 现 在 一 个 Web 页 面 中 链 接 多 个 对 象, 并 与 Web 客 户 端 实 现 交 互 效 果 无 论 是 在 客 户 端 还 是 在 服 务 器 端,JavaScript 应 用 程 序 都 要 下 载 到 浏 览 器 的 客 户 端 执 行, 从 而 减 轻 服 务 器 端 的 负 担 JavaScript 基 本 结 构 JavaScript 代 码 是 用 <script> 标 记 嵌 入 HTML 文 档 中, 可 以 将 多 个 脚 本 嵌 入 到 一 个 文 档 中, 只 需 将 每 个 脚 本 都 封 装 在 <script> 标 记 中 即 可 客 户 端 浏 览 器 遇 到 <script> 标 记 时, 将 逐 行 读 取 内 容, 直 到 遇 到 </script> 结 束 标 记 为 止 最 后 浏 览 器 将 检 查 JavaScript 语 句 的 语 法, 如 果 有 任 何 错 误, 就 会 在 警 告 框 中 显 示 出 来, 如 果 没 有 错 误, 客 户 端 浏 览 器 将 编 译 并 执 行 语 句 JavaScript 脚 本 的 基 本 结 构 如 下
2 <script language="javascript"> <!-- JavaScript 脚 本 代 码 片 段 1 JavaScript 脚 本 代 码 片 段 2 JavaScript 脚 本 代 码 片 段 3. --> </script> Java Web 实 战 开 发 完 全 学 习 手 册 language 属 性 用 于 指 定 编 写 脚 本 使 用 哪 一 种 脚 本 语 言, 脚 本 语 言 是 浏 览 器 用 于 解 释 脚 本 的 语 言, 通 过 该 属 性 还 可 以 指 定 使 用 的 脚 本 语 言 的 版 本 <!-- --> 是 注 释 标 记,<!-- 表 示 开 始 注 释 标 记,--> 表 示 结 束 注 释 标 记, 此 标 记 告 知 不 支 持 脚 本 的 浏 览 器 忽 略 标 记 中 包 含 的 语 句 此 标 记 是 可 选 的, 但 最 好 在 脚 本 中 使 用 此 标 记, 可 确 保 不 支 持 脚 本 的 浏 览 器 会 忽 略 嵌 入 到 HTML 文 档 中 的 JavaScript 语 句 下 面 通 过 一 个 实 例 了 解 JavaScript 的 基 本 用 法 <html xmlns=" <head> <meta http-equiv="content-type" content="text/html;charset=gb2312" /> <title>javascript 的 基 本 用 法 </title> <script language="javascript"> document.write("javascript 世 界 欢 迎 您!"); alert(" 欢 迎 来 到 JavaScript 的 脚 本 世 界!"); </script> </head> <body> </body> </html> 在 上 述 代 码 中,document.write() 方 法 类 似 于 Java 语 言 中 的 print() 函 数, 表 示 向 页 面 输 出 显 示 信 息 alert() 方 法 表 示 弹 出 一 个 提 示 框, 用 于 显 示 弹 出 信 息, 上 述 代 码 执 行 效 果 如 图 3-1 所 示 图 3-1 JavaScript 的 基 本 用 法 90
3 理 论 上, 可 以 将 JavaScript 语 句 放 置 在 HTML 文 档 中 的 任 意 位 置 然 而, 将 其 放 置 在 标 签 <head></head> 之 间 是 一 个 良 好 的 编 程 习 惯, 因 为 这 样 确 保 了 所 有 代 码 在 从 body 部 分 调 用 之 前 被 阅 读 和 执 行 JavaScript 脚 本 的 执 行 原 理 了 解 了 JavaScript 脚 本 的 基 本 结 构, 下 面 再 来 了 解 脚 本 的 执 行 原 理 在 脚 本 的 执 行 过 程 中, 客 户 端 浏 览 器 与 应 用 服 务 器 之 间 采 用 请 求 / 响 应 模 式 进 行 交 互 第 3章 JavaScript 基 础 图 3-2 脚 本 执 行 原 理 如 图 3-2 所 示, 交 互 过 程 如 下 (1) 浏 览 器 接 收 到 用 户 的 请 求 : 用 于 输 入 要 访 问 的 网 址 ( 包 含 JavaScript 脚 本 ) (2) 客 户 端 浏 览 器 向 服 务 器 请 求 某 个 包 含 JavaScript 脚 本 的 页 面, 浏 览 器 将 请 求 消 息 发 送 至 服 务 器, 等 待 服 务 器 的 响 应 (3) 应 用 服 务 器 向 客 户 端 浏 览 器 发 送 响 应 消 息, 也 就 是 把 含 有 JavaScript 脚 本 的 HTML 文 件 发 送 至 客 户 端, 然 后 由 客 户 端 浏 览 器 由 上 至 下 逐 行 解 析 HTML 标 记 和 JavaScript 脚 本, 并 将 解 析 结 果 呈 现 给 用 户 使 用 JavaScript 脚 本 的 好 处 如 下 (1) 含 有 脚 本 的 页 面 只 需 在 第 一 次 请 求 时 下 载 一 次 即 可, 从 而 减 少 了 不 必 要 的 网 络 通 信 (2)JavaScript 脚 本 是 由 客 户 端 浏 览 器 执 行, 而 不 是 服 务 器 端 执 行, 从 而 减 轻 了 服 务 器 端 的 压 力 解 释 型 语 言 对 程 序 来 说, 计 算 机 需 要 一 个 翻 译, 即 把 程 序 代 码 变 成 由 0 和 1 组 成 的 包 含 信 息 的 序 列 计 算 机 可 以 理 解 的 二 进 制 语 言 目 前 存 在 编 译 和 解 释 两 种 翻 译 类 型 两 种 方 式 都 需 要 对 代 码 进 行 翻 译, 只 是 翻 译 的 时 间 不 同 而 已 编 译 型 语 言 在 计 算 机 运 行 代 码 前, 需 要 先 把 代 码 翻 译 成 计 算 机 可 以 理 解 的 文 件, 如 91
4 EXE 文 件, 这 个 EXE 文 件 只 需 要 经 过 一 次 编 译 就 可 以 运 行 了, 而 且 除 非 修 改 代 码, 否 则 都 不 需 要 重 新 编 译, 所 以 编 译 型 语 言 的 程 序 执 行 效 率 高 解 释 型 语 言 则 不 同, 解 释 型 语 言 的 程 序 不 需 要 在 运 行 前 编 译, 在 运 行 程 序 时 才 翻 译, 专 门 的 解 释 器 负 责 在 每 个 语 句 执 行 时 解 释 程 序 代 码 这 样 解 释 型 语 言 每 执 行 一 次 就 要 翻 译 一 次, 效 率 比 较 低 由 于 JavaScript 属 于 解 释 型 语 言, 这 就 表 示 每 句 代 码 只 有 在 运 行 时, 系 统 才 知 道 这 句 代 码 是 否 有 错, 就 是 说, 由 于 编 译 型 语 言 在 运 行 前 进 行 了 编 译, 编 译 器 对 所 有 代 码 都 进 行 了 检 查, 这 样 就 不 会 产 生 一 些 低 级 错 误 但 是 由 于 JavaScript 语 言 的 性 质 决 定 了 目 前 的 大 部 分 工 具 对 JavaScript 脚 本 语 言 的 调 试 都 支 持 得 不 是 很 好, 这 就 需 要 开 发 者 更 细 心 更 专 心 地 对 付 这 些 脚 本 了 3.2 JavaScript 的 基 础 Java Web 实 战 开 发 完 全 学 习 手 册 JavaScript 像 Java 一 样, 也 是 一 门 编 程 语 言, 有 其 自 身 的 基 本 数 据 类 型 表 达 式 运 算 符 号 和 逻 辑 控 制 语 句 等 基 本 语 法 JavaScript 通 过 数 据 类 型 来 处 理 数 字 和 文 字 通 过 变 量 提 供 存 放 信 息 的 地 方, 通 过 表 达 式 完 成 较 为 复 杂 的 信 息 处 理 等, 下 面 学 习 JavaScript 的 基 础 数 据 类 型 在 JavaScript 脚 本 语 言 中 有 如 下 四 种 基 本 数 据 类 型 1. 字 符 串 类 型 用 双 引 号 或 单 引 号 括 起 来 的 字 符 或 数 值, 这 是 程 序 中 使 用 最 广 的 一 种 类 型 JavaScript 将 字 符 串 类 型 定 义 为 由 0 个 或 多 个 16 位 无 符 号 整 数 组 成 的 有 限 序 列, 如 "abc123" 或 "" 引 号 用 来 表 示 这 是 一 个 字 符 串 类 型 的 值, 注 意 是 英 文 引 号 在 字 符 串 序 列 中 的 每 个 字 符 都 有 一 个 索 引 值, 用 来 定 位 字 符 的 位 置, 例 如, 第 一 个 字 符 的 索 引 值 是 0, 第 二 个 字 符 是 1, 以 此 类 推 字 符 串 的 长 度 用 一 个 正 整 数 来 表 示, 字 符 串 序 列 中 有 几 个 字 符, 它 的 长 度 就 是 几, 如 "abc" 的 长 度 是 3, 代 码 如 下 所 示 <html> <head> </head> <body> <script language="javascript"> var n="abc"; alert(n.length); </script> </body> </html> 运 行 效 果 如 图 3-3 所 示 92
5 第 3章 图 3-3 非 空 字 符 串 长 度 如 果 没 有 字 符, 像 空 字 符 串 "", 它 的 长 度 就 是 0, 把 图 3-3 中 的 代 码 变 量 n 值 变 为 空, 运 行 效 果 如 图 3-4 所 示 JavaScript 基 础 图 3-4 空 字 符 串 长 度 对 初 学 者 而 言, 一 个 容 易 混 淆 的 概 念 就 是 空 字 符 串, 应 该 把 空 字 符 串 和 空 值 (null) 区 分 开 来 例 如 : // 空 字 符 串, 表 示 变 量 str 的 值 是 一 个 字 符 串, 字 符 串 内 容 为 空 var str = ""; // 空 值, 表 示 变 量 str 的 值 是 空 var str = null; JavaScript 不 区 分 单 引 号 或 者 双 引 号, 其 功 能 相 同, 但 应 该 防 止 出 现 引 号 不 匹 配 的 情 况, 例 如 : var str = 'abc"; // 或 var str = "abc'; 93
6 防 止 出 现 这 类 情 况 最 好 的 办 法 是 先 写 一 对 引 号, 再 写 中 间 的 内 容 如 果 想 在 字 符 串 内 使 用 单 / 双 引 号 作 为 字 符 的 话, 注 意 不 要 与 字 符 串 界 限 符 ( 字 符 串 的 开 始 和 结 束 ) 发 生 冲 突 例 如 : var str = "She said "how could this be""; 这 是 一 个 错 误 的 字 符 串 格 式, 字 符 串 内 容 中 的 双 引 号 和 字 符 串 界 限 符 发 生 了 冲 突, 结 果 就 是 语 法 错 误, 避 免 这 种 情 况 最 好 的 方 法 就 是 使 用 单 / 双 引 号 混 合, 例 如 : var str = "She said 'how could this be'"; Java Web 实 战 开 发 完 全 学 习 手 册 这 样 就 不 会 有 问 题 了, 但 如 果 内 容 中 必 须 要 用 双 引 号, 或 者 单 / 双 引 号 都 要 作 为 字 符 串 的 值 出 现 时, 就 要 使 用 转 义 字 符 了 2. 数 值 类 型 包 括 常 用 的 整 数 和 实 数 JavaScript 中 的 数 值 类 型 为 64 位 双 精 度 浮 点 类 型, 遵 循 二 进 制 浮 点 数 算 术 标 准 IEEE 754( 美 国 电 气 和 电 子 工 程 师 协 会 标 准 ) IEEE 754 标 准 详 细 描 述 了 浮 点 数 的 组 成 及 范 围 大 小 等 数 值 类 型 可 以 通 过 整 数 小 数 及 各 种 不 同 的 进 制 格 式 来 表 示 JavaScript 中 没 有 针 对 整 数 的 类 别, 这 跟 其 他 服 务 端 编 程 语 言 是 不 大 相 同 的 通 常 小 数 和 整 数 会 被 分 别 存 储 在 不 同 的 类 别 中 下 面 观 察 JavaScript 中 所 能 表 示 的 各 种 数 值 类 型 及 不 同 的 格 式 // 十 进 制 var num = 100; // 十 进 制 小 数 var num = 1.919; // 八 进 制 var num = 010; // 十 六 进 制 var num = 0xFD; // 科 学 计 数 法 var num = 9.99e+9; 不 管 参 与 运 算 的 变 量 值 是 什 么 进 制 的 数 值, 但 计 算 结 果 仍 然 会 是 十 进 制, 如 下 面 的 例 子 // 不 同 格 式 数 值 的 混 合 运 算 var n1 = 010; var n2 = 0xFD; alert(n1 * n2); 94
7 运 行 结 果 如 图 3-5 所 示 第 3章 图 3-5 不 同 格 式 的 数 值 混 合 计 算 的 结 果 数 值 类 型 有 三 个 特 殊 的 常 量 值, 分 别 是 NaN +Infinity 和 -Infinity (1)NaN NaN 的 全 称 是 Not a Number, 非 数 值 常 量 表 示 一 个 值 并 不 是 合 法 的 数 值 形 式, 它 通 常 用 来 验 证 一 个 变 量 的 值 是 否 是 数 值 虽 然 NaN 本 身 是 系 统 已 经 提 供 的 常 量, 但 通 常 不 与 它 进 行 直 接 比 较, 而 且 这 种 比 较 也 是 无 法 得 到 正 确 的 结 果, 例 如 : JavaScript 基 础 var str1 = 'abc'; alert(str1 == NaN); 运 行 结 果 如 图 3-6 所 示 图 3-6 确 认 变 量 是 否 为 数 值 (1) 从 图 3-5 中 可 以 看 到, 显 然 通 过 与 NaN 比 较 是 不 行 的, 要 想 得 到 正 确 结 果, 应 该 使 用 isnan 函 数 进 行 判 断 isnan() 函 数 用 于 检 查 其 参 数 是 否 是 非 数 字 值, 例 如 : var str1 = 'abc'; alert(isnan(str1)); 运 行 结 果 如 图 3-7 所 示 95
8 图 3-7 确 认 变 量 是 否 为 数 值 (2) Java Web 实 (2)+Infinity 正 无 穷 常 量 表 示 一 个 数 值 表 达 式 的 计 算 结 果 是 无 穷 大,JavaScript 规 定 大 于 或 等 于 2 的 1024 次 方 的 数 为 无 穷, 例 如 : 战 开 发 完 全 学 习 手 册 alert(math.pow(2,1024)); Math.pow() 返 回 指 定 数 字 的 指 定 次 幂 运 行 结 果 如 图 3-8 所 示 图 3-8 正 无 穷 (3)-Infinity 负 无 穷 常 量 与 正 无 穷 相 反, 但 它 们 的 数 量 级 是 相 同 的, 例 如 : alert(-math.pow(2, 1024)); 运 行 结 果 如 图 3-9 所 示 图 3-9 负 无 穷 96
9 3. 布 尔 值 使 用 true 或 false 表 示 的 值 布 尔 类 型 也 就 是 真 假 类 型, 这 个 类 型 有 两 个 标 准 值,true ( 真 ) false( 假 ) 布 尔 值 用 来 表 示 一 个 逻 辑 表 达 式 的 结 果, 通 常 用 于 判 断 处 理, 如 1 < 2, 这 个 逻 辑 表 达 式 的 值 就 为 true, 反 之 则 为 false, 如 图 3-10 所 示 第 3章 图 3-10 布 尔 表 达 式 4. 空 值 这 个 类 型 只 有 一 个 值 null null 是 一 个 占 位 符, 表 示 一 个 变 量 已 经 有 值, 但 值 为 空 不 同 于 undefined,null 值 通 常 产 生 在 程 序 运 行 当 中 当 变 量 不 再 被 使 用 时, 将 变 量 赋 值 为 null, 以 释 放 存 储 空 间 5. 引 用 类 型 相 对 于 以 上 的 几 种 基 本 类 型 外, 引 用 类 型 最 大 的 不 同 在 于 变 量 值 的 存 储 方 式 对 基 本 类 型 来 说, 变 量 中 存 储 的 是 值 本 身, 如 图 3-11 所 示 而 引 用 类 型 存 储 x 的 是 值 所 在 内 存 空 间 的 地 址, 也 就 是 指 针, 如 图 3-12 所 示 var n = 12345; var n = string ; JavaScript 基 础 图 3-11 基 本 类 型 var obj = Object; 内 存 地 址 0xFF1D 图 3-12 引 用 类 型 引 用 类 型 通 常 被 认 为 是 类, 而 它 的 值 就 是 对 象 对 象 是 一 种 特 殊 的 值, 相 当 于 集 合 可 以 通 过 ( 点 运 算 符 ) 访 问 集 合 内 部 的 值, 如 obj.name 引 用 对 象 的 地 址 是 因 为, 对 象 的 大 小 无 法 像 基 本 类 型 那 样 确 定, 例 如, 数 值 最 大 64bit, 97
10 布 尔 值 只 有 真 和 假 等, 集 合 的 大 小 不 是 固 定 的, 计 算 机 在 分 配 存 储 空 间 时 是 在 堆 上 分 配 而 基 本 类 型 则 是 在 栈 上 分 配 空 间, 便 于 迅 速 查 找 变 量 值 字 符 串 类 型 在 JavaScript 中 有 点 特 殊, 在 其 他 编 程 语 言 中, 它 都 是 引 用 类 型, 因 为 字 符 串 的 长 度 不 是 固 定 的 但 在 JavaScript 规 范 中, 它 被 定 义 为 基 本 类 型, 但 这 只 是 对 使 用 而 言 下 面 的 例 子 演 示 了 基 本 类 型 和 引 用 类 型 在 存 储 方 面 的 差 异 // 值 传 递 var num1 = 1; var num2 = num1; num1 = 2; alert(num2); 运 行 结 果 如 图 3-13 所 示 Java Web 实 战 开 发 完 全 学 习 手 册 图 3-13 基 本 类 型 的 值 传 递 图 3-13 演 示 了 基 本 类 型 的 值 传 递, 当 把 变 量 num1 的 值 赋 值 给 变 量 num2 时, 是 把 变 量 num1 所 存 储 的 值 1 赋 给 了 变 量 num2, 所 以, 后 面 把 变 量 num1 的 值 改 为 2 时, 对 变 量 num2 没 有 影 响, 变 量 num2 的 值 仍 然 为 1 而 下 面 的 代 码 就 不 同 了 // 引 用 传 递 var a = Object; var b = a; a.name = 'ylem'; alert(b.name); 运 行 结 果 如 图 3-14 所 示 图 3-14 演 示 了 引 用 类 型 的 引 用 传 递, 变 量 a 的 值 为 对 象 Object 的 指 针, 当 把 变 量 a 赋 值 给 变 量 b 时,b 存 储 的 只 是 和 a 一 样 的 指 针, 都 指 向 Object 当 通 过 变 量 a 的 引 用 把 Object 的 name 属 性 改 变 后, 通 过 变 量 b 的 引 用 也 发 生 了 改 变, 因 为 它 们 引 用 的 是 同 一 个 对 象 98
11 图 3-14 引 用 类 型 的 引 用 传 递 使 用 引 用 类 型 赋 值 时 需 要 特 别 小 心, 因 为 被 赋 值 的 变 量 和 原 变 量 引 用 了 同 一 个 对 象, 修 改 任 意 一 个 引 用 时, 另 一 个 也 会 受 影 响 第 3章 JavaScript 基 JavaScript 中 的 常 量 常 量 是 一 种 固 定 不 变 的 数 据 类 型 在 JavaScript 程 序 中 的 常 量 一 旦 定 义 了 数 值, 则 会 一 直 保 持 固 定 的 数 值 直 至 程 序 运 行 结 束 JavaScript 中 主 要 包 含 以 下 类 型 的 常 量 1. 整 型 常 量 JavaScript 的 常 量 通 常 又 称 为 字 面 常 量, 它 是 不 能 改 变 的 数 据, 其 整 形 常 量 可 以 用 十 六 进 制 八 进 制 和 十 进 制 来 表 示 其 具 体 值 2. 实 型 常 量 实 型 常 量 由 整 数 部 分 和 小 数 部 分 共 同 表 示, 如 和 等, 也 可 以 使 用 科 学 计 数 法 表 示, 如 5E6 和 4E3 等 3. 布 尔 值 布 尔 常 量 只 有 true 和 false 两 种 状 态, 其 主 要 功 能 用 来 说 明 或 代 表 一 种 对 象 的 状 态 或 标 志, 以 说 明 操 作 流 程 础 JavaScript 中 的 布 尔 值 与 C++ 不 同 C++ 可 以 用 0 或 1 表 示 其 状 态, 而 JavaScript 只 能 用 False 或 True 来 表 示 其 状 态 4. 字 符 型 常 量 字 符 型 常 量 即 使 用 单 引 号 或 双 引 号 括 起 来 的 一 个 或 几 个 字 符, 如 Hello World JavaScript 1234 和 hello 7.2 等 5. 空 值 JavaScript 中 只 有 一 个 空 值 NULL, 表 示 什 么 也 没 有 6. 特 殊 字 符 JavaScript 中 以 反 斜 杠 (\) 开 头 的 不 可 显 示 的 特 殊 字 符, 通 常 称 为 控 制 字 符, 可 以 作 为 脚 本 代 码 的 注 释 99
12 3.2.3 JavaScript 中 的 变 量 变 量 是 指 可 以 变 化 的 数 据 类 型, 变 量 一 经 定 义 后 可 以 根 本 程 序 的 需 要 而 代 表 不 同 的 数 值 变 量 的 主 要 功 能 是 存 取 数 据 和 提 供 存 放 信 息 的 容 器 变 量 以 非 数 字 的 符 号 来 表 达 变 量 是 常 数 的 相 反 在 变 量 使 用 时 必 须 明 确 变 量 的 命 名 类 型 声 明 和 其 作 用 域 1. 变 量 的 声 明 变 量 声 明 语 法 如 下 var 变 量 名 ; JavaScript 通 过 关 键 字 var 来 声 明 一 个 变 量 在 关 键 字 和 变 量 名 之 间 至 少 要 有 一 个 空 格 变 量 名 需 要 遵 守 一 定 的 规 范, 至 少 不 应 该 出 现 中 文 及 特 殊 字 符 Java Web 实 战 开 发 完 全 学 习 手 册 分 号 表 示 代 码 的 分 隔, 在 JavaScript 中 不 是 必 须 的, 如 果 一 行 只 有 一 条 语 句, 分 号 是 可 以 忽 略 的, 但 笔 者 的 意 见 是, 除 非 JavaScript 中 明 确 规 定 不 能 写 分 号, 否 则 在 任 何 时 候 都 不 要 忘 记 写 分 号 在 实 际 使 用 脚 本 代 码 时, 通 常 都 会 对 代 码 进 行 压 缩 和 混 淆, 以 便 使 得 网 页 可 以 更 快 地 打 开, 从 增 加 用 户 体 验, 另 一 方 面 混 淆 代 码 使 得 程 序 更 加 安 全 不 写 分 号 将 很 有 可 能 导 致 压 缩 后 的 代 码 无 法 使 用, 同 样 的 事 情 还 会 发 生 在 大 括 号 上, 读 者 可 以 在 学 习 语 句 后 了 解 大 括 号 声 明 语 句 告 诉 浏 览 器, 这 个 变 量 可 以 用 来 存 放 或 修 改 数 据 未 被 赋 值 的 变 量 也 是 有 值 的, 要 给 变 量 赋 值, 需 要 使 用 赋 值 语 句 2. 变 量 的 赋 值 变 量 的 赋 值 语 法 如 下 变 量 名 = 值 ; 这 里 的 等 号 (=) 为 赋 值 运 算 符 通 常, 用 法 更 多 的 是 把 变 量 声 明 和 变 量 赋 值 这 两 种 操 作 合 二 为 一, 如 var age = 26; 上 述 代 码 声 明 一 个 叫 做 age 的 变 量, 并 对 其 进 行 初 始 化, 初 始 化 的 值 为 26 在 JavaScript 中 还 会 发 生 一 些 比 较 奇 怪 的 事 情, 例 如 : var num = 28; var num = 9; 上 面 的 代 码 通 常 会 被 解 释 为 声 明 了 两 个 同 名 的 变 量, 而 这 在 大 多 数 编 程 语 言 中 都 会 引 发 程 序 的 错 误, 但 奇 怪 的 事 情 就 发 生 在 JavaScript 中 JavaScript 把 重 复 的 声 明 和 赋 值 当 作 对 同 一 变 量 的 重 新 赋 值 相 当 于 : var num = 28; num = 9; 读 者 在 编 码 过 程 中 应 该 避 免 出 现 这 样 的 情 况 JavaScript 是 一 种 弱 类 型 的 脚 本 语 言, 在 其 他 强 类 型 语 言 ( 如 Java C# C/C++) 中, 声 明 变 量 时 必 须 指 定 变 量 的 具 体 类 型 100
13 例 如 : int m; // 声 明 一 个 整 数 类 型 的 变 量 float n; // 声 明 一 个 单 精 度 浮 点 型 的 变 量 double x;// 声 明 一 个 双 精 度 浮 点 型 的 变 量 char c; // 声 明 一 个 字 符 类 型 的 变 量 而 在 JavaScript 中, 不 管 什 么 类 型 的 变 量, 声 明 时 都 只 使 用 var 关 键 字 (var 是 变 量 英 文 名 的 缩 写 ), 而 变 量 的 具 体 类 型 是 在 赋 值 后 才 确 定 的 3. 变 量 的 命 名 JavaScript 中 的 变 量 命 名 与 其 他 编 程 语 言 相 比, 主 要 遵 循 如 下 几 点 必 须 是 一 个 有 效 的 变 量, 即 变 量 以 字 母 和 $ 和 _ 开 头, 而 后 可 以 出 现 数 字 等 变 量 名 中 不 能 存 在 空 格 + - 逗 号 等 其 他 特 殊 符 号 另 外,JavaScript 中 的 变 量 名 是 区 分 大 小 写 的 例 如 : 第 3章 JavaScript 基 var $_$ = 1; var _$_1 = 2; var Name= Tom ; 础 这 些 都 是 合 法 的 命 名 而 像 下 面 的 代 码 var &_& = 1; var 1ab = 1; var._. = 1; 都 是 不 合 法 命 名, 在 运 行 中 会 出 现 语 法 错 误 4. 变 量 的 声 明 和 作 用 域 可 以 在 使 用 JavaScript 变 量 前 先 声 明 并 赋 值 JavaScript 是 采 用 动 态 编 译 的, 而 动 态 编 译 的 缺 点 是 不 易 发 现 代 码 中 的 错 误, 特 别 是 变 量 命 名 方 面 当 使 用 变 量 进 行 声 明 后, 可 以 及 时 发 现 代 码 中 的 错 误 JavaScript 中 的 变 量 有 全 局 变 量 和 局 部 变 量 两 种 全 局 变 量 定 义 在 所 有 函 数 体 外, 其 作 用 范 围 是 整 个 函 数 ; 而 局 部 变 量 定 义 在 函 数 体 之 内, 只 对 该 函 数 是 可 见 的, 而 对 其 他 函 数 则 是 不 可 见 的 类 型 转 换 不 同 类 型 值 之 间 的 相 互 转 换 在 实 际 开 发 中 使 用 是 非 常 频 繁 的 最 简 单 的 例 子 就 是 从 网 页 输 入 框 获 取 数 值 进 行 数 学 运 算 之 前, 获 取 的 值 必 须 进 行 转 换, 因 为 所 有 从 网 页 中 获 取 的 文 本 数 据, 都 是 字 符 串 类 型 的, 必 须 先 转 换 成 数 值 类 型 1. 转 换 成 数 值 类 型 数 据 有 两 种 方 式 被 转 换 成 其 他 类 型 : 一 种 是 隐 式 转 换 ; 另 一 种 是 显 式 转 换 101
14 (1) 隐 式 转 换 在 数 据 运 算 过 程 中, 系 统 自 动 把 不 同 的 基 本 数 据 类 型 转 换 成 相 同 类 型 进 行 运 算, 例 如 : // 字 符 串 转 数 字 alert('777'-677); 运 行 结 果 如 图 3-15 所 示 系 统 会 自 动 把 参 与 运 算 的 基 本 类 型 按 照 系 统 自 己 的 逻 辑 进 行 类 型 转 换, 有 时 可 能 不 是 开 发 者 想 要 的 那 样, 例 如, 字 符 串 转 数 值 时, 如 果 把 字 符 串 放 在 运 算 符 的 左 边, 结 果 就 是 一 个 字 符 串 值, 而 不 是 数 值 了 Java Web 实 战 开 发 完 全 学 习 手 册 null 转 数 值 的 例 子 如 下 图 3-15 字 符 串 转 数 值 // null 转 数 值 alert(1 - null); 运 行 结 果 如 图 3-16 所 示 布 尔 值 转 数 值 的 例 子 如 下 // 布 尔 值 转 数 值 alert(true + false + 1); 运 行 结 果 如 图 3-17 所 示 图 3-16 null 转 数 值 102
15 undefined 转 数 值 的 例 子 如 下 图 3-17 布 尔 值 转 数 值 第 3章 // undefined 转 数 值 alert(1 - undefined); 运 行 结 果 如 图 3-18 所 示 JavaScript 基 础 图 3-18 undefined 转 数 值 (2) 显 式 转 换 系 统 无 法 总 是 猜 中 开 发 者 的 意 图, 所 以 有 时 开 发 者 需 要 自 己 对 数 据 进 行 类 型 转 换 最 简 单 直 接 的 办 法 是 在 字 符 串 前 面 加 正 / 负 符 号 此 外,JavaScript 还 提 供 了 两 种 函 数 用 于 基 本 数 值 类 型 的 转 换, 分 别 是 parseint() 和 parsefloat() parseint() 转 换 成 整 数 的 函 数, 只 能 对 字 符 串 类 型 进 行 转 换, 其 他 类 型 被 转 换 的 结 构 都 将 得 到 NaN parseint 的 转 换 过 程 是 从 字 符 串 的 第 一 个 字 符 开 始 依 次 进 行 判 断, 如 果 发 现 字 符 不 是 数 字 字 符, 那 么 将 停 止 转 换, 例 如,parseInt( 123a1234 ) 的 转 换 结 果 就 是 123 如 果 字 符 串 的 第 一 个 字 符 是 除 了 减 号 ( 表 示 负 数 ) 外 的 任 何 非 数 字 字 符, 将 得 到 NaN 的 结 果, 例 如 : alert(parseint('a12345')); 运 行 结 果 如 图 3-19 所 示 103
16 图 3-19 parseint 函 数 的 使 用 Java Web 实 战 开 发 完 全 学 习 手 册 除 了 parseint 的 基 本 用 法 外, 还 可 以 进 行 转 换 进 制 的 指 定, 例 如, 把 16 位 的 字 符 转 换 为 数 值, 如 alert(parseint('ff',16)); 运 行 结 果 如 图 3-20 所 示 图 3-20 parseint 指 定 转 换 格 式 实 际 上 不 仅 是 16 进 制, 还 可 以 是 8 进 制, 甚 至 是 11 进 制, 读 者 可 以 试 着 改 变 这 个 参 数 注 意, 不 要 以 为 默 认 的 parseint 的 结 果 一 定 是 10 进 制 数, 如 果 字 符 串 第 一 个 字 符 是 0 的 话, 会 被 转 换 为 8 进 制 数, 在 使 用 时 一 定 要 注 意, 如 图 3-21 所 示 图 3-21 parseint 默 认 的 8 进 制 转 换 104
17 (2)parseFloat() 转 换 成 小 数 的 函 数, 除 了 转 换 结 果 是 浮 点 数 外, 也 无 法 指 定 转 换 格 式, 其 他 特 性 与 parseint 没 有 区 别, 例 如 : alert(parsefloat('1.12')); 运 行 结 果 如 图 3-22 所 示 第 3章 图 3-22 parsefloat 函 数 的 使 用 JavaScript 基 础 2. 转 换 成 字 符 串 类 型 JavaScript 没 有 用 于 转 换 字 符 串 类 型 的 函 数, 原 因 很 简 单, 大 部 分 的 数 据 都 是 字 符 串 类 型 的 转 换 成 字 符 串 类 型 很 简 单, 只 需 要 使 用 连 接 符 号 + 连 接 一 个 字 符 串 类 型 的 值, 就 能 将 其 他 类 型 的 值 拼 接 成 新 的 字 符 串, 例 如 : alert('yg'+null+undefined+123+true); 运 行 结 果 如 图 3-23 所 示 图 3-23 字 符 串 类 型 的 隐 式 转 换 图 3-23 完 美 地 诠 释 了 字 符 串 的 威 力, 所 有 类 型 的 值 都 被 融 合 为 一 个 大 的 字 符 串 3. 转 换 成 布 尔 类 型 在 JavaScript 中, 除 了 true 和 false 外, 还 有 很 多 值 可 以 表 示 真 或 假, 见 表
18 表 3-1 很 多 值 可 以 表 示 真 或 假 数 据 类 型 布 尔 值 为 假 时 的 值 布 尔 值 为 真 时 的 值 Undefined undefined 无 Null null 无 String 非 空 字 符 串 Number 0 或 者 NaN 非 0 Object( 引 用 类 型 ) null 非 空 对 象 转 义 字 符 Java Web 实 转 义 字 符 是 一 种 特 殊 的 字 符 常 量 转 义 字 符 以 反 斜 线 \ 开 头, 后 跟 一 个 或 几 个 字 符 转 义 字 符 具 有 特 定 的 含 义, 不 同 于 字 符 原 有 的 意 义, 这 有 点 类 似 于 键 盘 上 的 Shift 表 3-2 中 列 举 了 常 用 的 转 义 字 符 战 开 发 完 全 学 习 手 册 表 3-2 常 用 的 转 义 字 符 及 其 含 义 转 义 字 符 Unicode 含 义 \b \u0008 退 格 t \u0009 横 向 跳 到 下 一 制 表 位 置 \n \u000a 回 车 换 行 \v \u000b 竖 向 跳 到 下 一 制 表 位 置 \f \u000c 走 纸 换 页 \r \u000d 回 车 \" \u0022 双 引 号 符 \' \u0027 单 引 号 符 \\ \u005c 反 斜 线 符 \xnn 十 六 进 制 代 码 nn(n 是 0 到 F 中 的 一 个 十 六 进 制 数 字 ) 表 示 的 字 符 \unnnn 十 六 进 制 代 码 nnnn(n 是 0 到 F 中 的 一 个 十 六 进 制 数 字 ) 表 示 的 Unicode 除 了 基 本 的 转 义 字 符 ( \ + 单 字 符 ) 外, 还 有 两 种 特 别 的 格 式, 即 \x 和 \u \x 是 用 2 位 十 六 进 制 数 字 来 表 示 字 符, 但 不 同 浏 览 器 对 字 符 的 支 持 不 同, 会 出 现 不 同 的 结 果, 例 如 : // 不 同 的 浏 览 器 结 果 不 同 alert("\x10"); 在 IE 和 FF 下 的 运 行 结 果 分 别 如 图 3-24 图 3-25 所 示 图 3-24 IE10 的 转 义 结 果 106
19 第 3章 图 3-25 FF 的 转 义 结 果 \u 是 用 4 位 十 六 进 制 数 字 来 表 示 字 符, 实 际 上 每 个 字 符 ( 包 括 转 义 字 符 ) 都 对 应 一 个 此 格 式 的 编 码, 也 就 是 Unicode 编 码, 例 如 : JavaScript 基 础 alert("he said \"how could this be\uff01\""); 运 行 结 果 如 图 3-26 所 示 图 3-26 Unicode 编 码 的 使 用 关 键 字 与 保 留 字 JavaScript 关 键 字 是 指 在 JavaScript 语 言 中 有 特 定 含 义, 成 为 JavaScript 语 法 中 一 部 分 的 那 些 字 JavaScript 关 键 字 是 不 能 作 为 变 量 名 和 函 数 名 使 用 的 使 用 JavaScript 关 键 字 作 为 变 量 名 或 函 数 名, 会 使 JavaScript 在 载 入 过 程 中 出 现 编 译 错 误 JavaScript 关 键 字 列 表 107
20 break delete function return typeof case do if switch var catch else in this void continue false instanceof throw while debugger finally new true with default for null try JavaScript 还 有 一 些 保 留 字, 这 些 保 留 字 虽 然 现 在 没 有 用 到 JavaScript 语 言 中, 但 是 将 来 有 可 能 用 到 JavaScript 保 留 字 列 表 如 下 Java Web 实 战 开 发 完 全 学 习 手 册 abstract Double float long short volatile boolean debugger goto native static byte enum implements package super char export import private synchronized class extends int protected throws const final interface public transient 运 算 符 除 了 加 减 乘 除 外,JavaScript 还 拥 有 其 他 丰 富 的 运 算 符, 包 括 常 见 的 大 于 小 于 等 比 较 运 算 符, 还 包 括 可 以 查 看 数 据 类 型 的 typeof 运 算 符, 掌 握 并 理 解 这 些 运 算 符, 是 学 好 JavaScript 的 基 础 1. 算 术 运 算 符 虽 然 是 算 术 运 算 符, 但 它 已 经 超 出 了 算 术 的 范 围, 不 过 读 者 大 可 不 必 担 心 什 么, 它 们 很 简 单, 如 表 3-3 所 示 基 本 的 四 则 运 算 符 在 这 里 仍 然 有 效, 包 括 可 以 使 用 小 括 号 进 行 优 先 级 的 改 变 加 号 除 了 可 以 做 四 则 运 算 外, 还 可 以 作 为 连 接 符 来 拼 接 字 符 串 在 JavaScript 的 除 法 中, 即 使 两 个 操 作 数 都 是 整 数, 当 无 法 整 除 时, 结 果 是 一 个 小 数, 而 不 是 整 数 还 有 当 除 数 为 0 时, 并 不 会 引 发 程 序 错 误, 而 是 得 到 一 个 Infinity 的 结 果 表 3-3 算 术 运 算 符 运 算 符 含 义 操 作 数 类 型 结 果 类 型 + 加 整 数 小 数 字 符 串 整 数 小 数 字 符 串 - 减 整 数 小 数 整 数 小 数 * 乘 整 数 小 数 整 数 小 数 / 除 整 数 小 数 整 数 小 数 % 取 模 ( 余 数 ) 整 数 小 数 整 数 小 数 ++ 数 值 加 1 整 数 小 数 整 数 小 数 -- 数 值 减 1 整 数 小 数 整 数 小 数 +value 变 量 取 正 整 数 小 数 字 符 串 整 数 小 数 -value 变 量 取 负 整 数 小 数 字 符 串 整 数 小 数 108
21 (1)% 运 算 符 取 模 运 算 符 类 似 除 法 运 算 符, 需 要 两 个 操 作 数 : 除 数 和 被 除 数 返 回 余 数 取 模 运 算 符 常 被 用 来 判 断 一 个 数 是 否 能 被 整 除 例 如 : y=5,x=y%2, 则 x=1 (2)++/-- 运 算 符 自 增 / 自 减 运 算 符, 只 需 要 一 个 操 作 数, 必 须 是 变 量 对 操 作 数 的 值 加 1 或 减 1 分 为 前 缀 和 后 缀 两 种 用 法, 例 如 : // 前 缀 用 法 var y = 5; alert(++y); 运 行 结 果 如 图 3-27 所 示 第 3章 JavaScript 基 础 图 3-27 自 增 / 自 减 运 算 符 的 前 缀 用 法 又 如 : // 后 缀 用 法 var y = 1; alert(y--); 运 行 结 果 如 图 3-28 所 示 图 3-28 自 增 / 自 减 运 算 符 的 后 缀 用 法 109
22 下 面 演 示 前 缀 用 法 和 后 缀 用 法 的 混 合 用 法 // 混 合 用 法 var y = 1; --y; alert(y++) 运 行 结 果 如 图 3-29 所 示 Java Web 实 战 开 发 完 全 学 习 手 册 图 3-29 混 合 用 法 上 面 的 代 码 详 细 介 绍 了 自 增 / 自 减 运 算 符 的 用 法, 对 前 缀 运 算 符 来 说, 可 以 直 接 认 为 是 变 量 值 加 1, 但 后 缀 运 算 符 有 些 特 殊, 注 意, 图 3-28 所 示 结 果 并 不 是 0, 而 图 3-29 所 示 结 果 也 不 是 1, 这 是 因 为 后 缀 运 算 符 的 优 先 级 比 较 低, 当 在 一 句 代 码 中 涉 及 多 个 操 作 时, 后 缀 运 算 符 会 最 后 执 行 所 以 先 以 alert() 输 出 了 y 的 值, 之 后 y 的 值 才 发 生 改 变 (3)+value/-value 运 算 符 变 量 取 正 / 负 运 算 符, 只 需 要 一 个 操 作 数, 可 以 是 常 量 正 / 负 符 号 最 有 用 的 地 方 在 于 可 以 很 容 易 地 将 字 符 串 类 型 的 值 转 换 为 数 值 类 型, 例 如 : alert(typeof +'1234') 运 行 结 果 如 图 3-30 所 示 图 3-30 字 符 串 转 换 数 字 110
23 如 果 字 符 串 中 的 字 符 不 是 有 效 的 数 字 字 符, 那 么, 转 换 结 果 将 得 到 NaN 2. 赋 值 运 算 符 不 论 哪 种 编 程 语 言, 赋 值 运 算 符 都 是 使 用 最 频 繁 的 运 算 符 只 要 是 有 变 量 的 地 方, 基 本 上 就 会 出 现 赋 值 运 算 符 除 了 基 本 的 赋 值 符 号 外,JavaScript 还 提 供 了 这 种 复 合 赋 值 符 号, 在 编 写 代 码 时, 使 用 复 合 赋 值 运 算 符, 可 以 简 化 代 码, 但 在 使 用 之 前 必 须 了 解 每 种 运 算 符 的 含 义, 如 表 3-4 所 示 的 分 解 表 达 式 针 对 位 移 运 算 和 按 位 操 作 本 书 稍 后 会 详 细 介 绍 表 3-4 赋 值 运 算 符 列 表 运 算 符 含 义 分 解 表 达 式 = 赋 值 a = b += 先 相 加 后 赋 值 a = a+b -= 先 相 减 后 赋 值 a = a-b *= 先 相 乘 后 赋 值 a = a*b /= 先 相 除 后 赋 值 a = a/b %= 先 取 模 后 赋 值 a = a%b <<= 向 左 位 移 后 赋 值 a = a<<b >>= 向 右 位 移 后 赋 值 a = a>>b >>>= 无 符 号 按 位 右 移 后 赋 值 a = a>>>b 第 3章 JavaScript 基 础 3. 关 系 运 算 符 关 系 运 算 符 是 对 两 个 操 作 数 进 行 关 系 判 断, 并 产 生 布 尔 结 果 的 一 种 运 算 符 例 如, 大 于 小 于 或 等 于 JavaScript 中 的 关 系 运 算 符 如 表 3-5 所 示 表 3-5 关 系 运 算 符 运 算 符 含 义 < 小 于 > 大 于 == 等 于 === 严 格 等 于 <= 小 于 等 于 >= 大 于 等 于!= 不 等 于!== 严 格 不 等 于 JavaScript 中 的 关 系 运 算 符 不 仅 可 以 做 数 值 间 的 比 较, 还 可 以 做 数 值 与 其 他 类 型 值 的 比 较, 更 可 以 做 非 数 值 类 型 间 的 比 较, 但 通 常 这 样 的 比 较 不 具 有 意 义 读 者 更 感 兴 趣 的 应 该 是 严 格 等 于 和 严 格 不 等 于, 这 种 运 算 符 在 其 他 编 程 语 言 (C/C++ Java) 中 是 没 有 的 严 格 的 意 思 就 是 不 仅 比 较 值 本 身, 还 会 对 值 的 类 型 进 行 比 较, 例 如 : alert((123 === '123')+'----'+(123!== '123')) 运 行 结 果 如 图 3-31 所 示 111
24 图 3-31 使 用 严 格 等 于 和 严 格 不 等 于 Java Web 实 战 开 发 完 全 学 习 手 册 图 3-31 所 示 严 格 比 较 运 算 符 的 使 用 方 法, 从 另 一 个 方 面 来 说, 如 果 要 求 不 严 格, 可 以 使 用 非 严 格 判 断 的 等 号 或 不 等 号 进 行 判 断, 例 如, 用 户 从 页 面 输 入 了 一 个 数 值 进 行 比 较, 这 时 就 可 以 直 接 用 字 符 串 进 行 比 较 而 不 需 要 转 换 4. 逻 辑 运 算 符 与 关 系 运 算 符 相 同, 逻 辑 运 算 符 的 结 果 也 是 一 个 布 尔 值 三 种 逻 辑 运 算 符 如 表 3-6 所 示 表 3-6 逻 辑 运 算 符 运 算 符 含 义 表 达 式 && 与 a && b 或 a b! 非!a 实 际 上 关 系 运 算 也 属 于 一 种 逻 辑 运 算, 但 逻 辑 运 算 符 可 以 处 理 更 复 杂 的 关 系 简 单 来 说, 逻 辑 运 算 符 可 以 计 算 多 个 关 系 运 算 的 结 果, 例 如, 要 验 证 某 人 年 龄 的 值 是 既 小 于 28 又 大 于 20 的, 这 两 种 关 系 必 须 是 同 时 满 足 的 但 JavaScript 中 不 存 在 20<age<28 这 种 用 法, 而 逻 辑 运 算 符 可 以 完 成 这 种 操 作 运 算 符 && 逻 辑 与 需 要 两 个 操 作 数, 都 是 布 尔 类 型 逻 辑 与 对 两 个 布 尔 值 进 行 判 断, 如 果 两 个 布 尔 值 都 为 真, 那 么, 逻 辑 和 表 达 式 的 值 就 为 真, 如 果 其 中 任 意 一 个 条 件 为 假 或 者 都 为 假, 那 表 达 式 的 结 果 就 为 假, 例 如 : if(age>20 && age<28) alert(age); 运 算 符 逻 辑 或 需 要 两 个 操 作 数, 都 是 布 尔 类 型 逻 辑 或 对 两 个 布 尔 值 进 行 判 断, 只 要 其 中 任 意 一 个 条 件 为 真, 那 表 达 式 的 结 果 就 为 真 否 则 为 假 运 算 符! 逻 辑 非 需 要 两 个 操 作 数, 是 布 尔 类 型 逻 辑 非 很 简 单, 对 操 作 的 布 尔 结 果 执 行 取 反 112
25 运 算 逻 辑 运 算 符 经 常 和 关 系 运 算 符 一 起 组 成 逻 辑 表 达 式, 例 如 : alert((28<20) (50<60)) 运 行 结 果 如 图 3-32 所 示 第 3章 图 3-32 逻 辑 运 算 4. 位 运 算 符 位 运 算 符 在 各 种 编 程 语 言 中 都 被 认 为 是 一 种 高 级 操 作, 这 主 要 是 因 为 位 运 算 牵 扯 到 更 多 的 计 算 机 内 部 原 理, 这 可 能 妨 碍 了 很 多 人 学 习 编 程 的 兴 趣 如 果 读 者 不 了 解 位 的 概 念, 可 以 先 不 必 阅 读 此 节, 事 实 上 在 实 际 的 开 发 中, 位 运 算 被 使 用 的 几 率 也 很 小 位 运 算 符 的 运 算 对 象 是 各 种 进 制 的 数 值 类 型 ( 包 括 8 进 制 10 进 制 16 进 制 ), 但 在 处 理 时 却 使 用 值 的 二 进 制 来 处 理 常 用 的 位 运 算 符 如 表 3-7 所 示 JavaScript 基 础 表 3-7 位 运 算 符 运 算 符 含 义 表 达 式 & 按 位 与 a & b 按 位 或 a b ~ 按 位 非 ~a ^ 按 位 异 或 a ^ b << 按 位 左 移 a << x >> 按 位 右 移 a >> x >>> 无 符 号 按 位 右 移 a >>> x (1) 按 位 与 对 于 两 个 数 值, 与 操 作 会 对 两 个 数 值 的 二 进 制 位 进 行 逻 辑 和 操 作, 例 如 : alert(2&3); // 结 果 为 2 一 个 二 进 制 的 位 操 作 图 可 以 很 好 地 解 释 这 一 结 果, 如 图 3-33 所 示 从 图 3-33 中 可 以 看 到 与 操 作 实 际 上 就 是 对 二 进 制 数 的 每 一 位 进 行 逻 辑 和 操 作, 而 因 为 是 按 照 位 来 做 运 算 的, 所 以 叫 按 位 与 113
26 图 3-33 按 位 与 运 算 模 型 另 一 个 更 简 易 的 办 法 就 是 把 10 进 制 数 当 作 二 进 制 数 直 接 进 行 观 察, 例 如 : alert(101 & 110); // 结 果 是 100 Java Web 实 战 开 发 完 全 学 习 手 册 (2) 按 位 或 或 操 作 和 与 操 作 的 运 算 方 式 是 相 同 的, 只 是 逻 辑 和 操 作 换 成 了 逻 辑 或, 例 如 : alert( ); (3) 按 位 非 不 同 于 其 他 位 操 作, 非 操 作 只 有 一 个 操 作 数, 非 运 算 会 对 操 作 数 的 每 一 位 取 反, 0 变 成 1,1 变 成 0, 例 如 : ~5 (4) 按 位 异 或 异 或 操 作 也 采 用 两 个 操 作 数 之 间 进 行 位 操 作 的 方 式, 只 是 运 算 方 式 发 生 了 改 变 如 果 两 个 位 的 值 不 同, 那 么, 结 果 位 则 为 真, 例 如 : alert(1 ^ 2); // 结 果 是 3, 因 为 二 进 制 01^ 10 的 结 果 是 11 alert(10 ^ 01); // 结 果 是 11 (5) 按 位 左 移 左 移 操 作 符 可 以 按 照 二 进 制 格 式 把 一 个 数 值 的 所 有 位 向 左 移 动, 例 如 : alert(1<<1); // 结 果 是 2 所 有 位 向 左 移 动 后, 原 有 的 空 位 就 补 0, 如 图 3-34 所 示 图 3-34 按 位 左 移 运 算 模 型 每 向 左 移 动 一 次, 相 当 于 把 原 有 数 值 乘 以 2, 如 果 在 频 繁 的 乘 法 运 算 中 使 用 位 移 操 作, 114
27 那 么, 计 算 效 率 将 得 到 显 著 提 高 (6) 按 位 右 移 与 按 位 左 移 相 似, 右 移 就 是 把 数 字 位 向 右 进 行 移 动 注 意, 当 右 移 作 为 除 以 2 的 运 算 时, 余 数 是 不 显 示 的, 例 如 : alert(21 >> 1); // 结 果 是 10 但 如 果 运 算 数 包 含 符 号, 结 果 就 不 同 了, 例 如 : alert(-21 >> 1); // 结 果 是 其 他 运 算 符 除 了 前 面 所 讲 的 常 用 运 算 符 外,JavaScript 还 有 一 些 特 有 的 运 算 符, 如 表 3-8 所 示 表 3-8 其 他 运 算 符 运 算 符 含 义 表 达 式 [ ] 获 取 对 象 属 性 或 数 组 元 素 a[1] 或 people[ age ] instanceof 验 证 对 象 是 否 为 类 的 实 例 a instanceof b typeof 查 看 数 据 类 型 typeof a new 构 造 对 象 new A void 取 消 返 回 值 JavaScript:void Exp delete 删 除 元 素 delete a in 验 证 属 性 a in b 第 3章 JavaScript 基 础 (1) 运 算 符 [ ] 方 括 号 运 算 符 用 于 获 取 对 象 属 性, 或 者 数 组 的 元 素 例 如, 要 获 得 数 组 a 的 第 一 个 元 素, 则 使 用 a[0] 访 问 即 可 (2) 运 算 符 instanceof 实 例 判 断 运 算 符 用 于 判 断 一 个 对 象 是 否 为 一 个 类 的 实 例 例 如, 要 判 断 对 象 a 是 否 为 数 组 的 实 例, 则 使 用 a instanceof Array 即 可, 返 回 值 为 布 尔 类 型, 代 码 如 下 var a=new Array(); alert("a instanceof Array:" + (a instanceof Array)); 以 上 代 码 判 断 a 是 否 为 数 组 的 一 个 实 例 运 行 效 果 如 图 3-35 所 示 图 3-35 运 算 符 instanceof 的 使 用 115
28 (2) 运 算 符 typeof 类 型 检 查 运 算 符 typeof 运 算 符 返 回 一 个 用 来 表 示 表 达 式 的 数 据 类 型 的 字 符 串, 用 于 查 看 值 的 数 据 类 型, 数 据 值 可 以 是 变 量 或 常 量 可 能 的 字 符 串 有 "number" "string" "boolean" "object" "function" 和 "undefined", 例 如 : alert(typeof (123));//typeof(123) 返 回 "number" alert(typeof ("123"));//typeof("123") 返 回 "string" (3) 运 算 符 new 对 象 构 造 运 算 符 用 于 构 造 一 个 新 的 对 象 实 例, 例 如 : var a=new Array(); Java Web 实 战 开 发 完 全 学 习 手 册 (4) 运 算 符 void 取 消 返 回 值 运 算 符 void 运 算 符 可 以 取 消 一 个 表 达 式 的 结 果 如 取 消 一 个 函 数 的 返 回 值, 例 如 : alert(void parseint('123abc')); 运 行 结 果 如 图 3-36 所 示 图 3-36 void 运 算 符 的 使 用 图 3-36 中 的 结 果 是 undefined, 并 不 是 123, 这 是 因 为 void 消 除 了 函 数 的 返 回 值 但 void 最 有 用 的 地 方 在 于 : 通 常 JavaScript 伪 协 议 用 在 <a> 标 签 的 href 属 性, 或 者 其 他 标 签 的 src 属 性 中, 如 <img> 标 签 当 在 这 些 属 性 中 使 用 伪 协 议 时, 所 计 算 的 表 达 式 可 能 会 产 生 某 些 非 undefined 的 值 当 href 或 者 src 属 性 得 到 这 些 值 时, 页 面 就 会 被 替 换 成 这 些 值, 而 页 面 本 身 就 被 覆 盖 掉 了, 例 如 : <html> <body> <a href='javascript:void (1+2)'> 超 链 接 </a> </body> </html> 116
29 读 者 可 以 尝 试 把 其 中 的 void 去 掉 是 什 么 效 果, 可 以 更 容 易 地 了 解 void 的 作 用 (5) 运 算 符 delete 删 除 值 运 算 符, 这 可 不 是 C 语 言 或 数 据 库 中 的 delete, 虽 然 它 们 貌 似 相 同, 但 功 能 却 差 得 很 远 在 C 中 的 delete 可 以 删 除 指 针 所 指 向 的 内 存 数 据, 释 放 内 存 空 间, 而 JavaScript 的 内 存 管 理 是 自 动 的 JavaScript 中 的 delete 用 来 删 除 对 象 的 属 性 或 者 数 组 中 的 元 素, 例 如 : delete obj.a; delete obj['a']; // 通 过 方 括 号 运 算 符 来 调 用 属 性 delete array[0]; // 删 除 数 组 中 的 第 一 个 元 素 当 以 delete 操 作 过 对 象 的 属 性 后, 再 次 调 用 这 个 属 性 会 得 到 undefined, 说 明 对 象 已 经 没 有 这 个 属 性 了 注 意, 这 跟 属 性 值 为 空 是 不 一 样 的 虽 然 delete 可 以 删 除 一 个 对 象 中 所 有 的 可 删 除 属 性 ( 有 些 属 性 无 法 删 除 ), 但 对 象 本 身 还 存 在, 如 果 要 释 放 对 象 本 身, 可 以 将 引 用 对 象 的 变 量 赋 值 为 null (6) 运 算 符 in 属 性 验 证 运 算 符 in 运 算 符 可 以 验 证 一 个 对 象 是 否 包 含 某 属 性, 如 a in obj 就 是 验 证 对 象 obj 是 否 拥 有 属 性 a 第 3章 JavaScript 基 础 优 先 级 和 结 合 性 看 下 面 的 例 子 var n1=1 + 2 * 3-4 / 5; 像 数 学 运 算 样, 程 序 中 的 运 算 符 也 有 先 乘 除 后 加 减 的 顺 序, 这 种 基 本 的 结 合 性 规 则 保 证 了 计 算 机 和 现 实 世 界 拥 有 完 全 相 同 的 处 理 思 路 如 果 想 改 变 运 算 符 本 身 的 结 合 顺 序, 那 就 必 须 借 助 于 小 括 号 来 达 到 目 的, 例 如 : var n2=1 + 2 * (3 4) / 5; 除 了 从 左 到 右 的 基 本 结 合 规 则 外, 从 右 到 左 也 是 会 经 常 用 到 的, 例 如 : var x = ; 结 合 性 保 证 了 计 算 机 按 照 正 确 的 顺 序 和 逻 辑 来 处 理 运 算 符 和 运 算 数 之 间 的 关 系, 而 在 多 种 运 算 符 混 合 的 代 码 中, 不 同 的 运 算 符 还 需 要 遵 循 运 算 符 优 先 级 的 顺 序 进 行 处 理 例 如 : alert(1<2 && 3<4) 逻 辑 运 算 符 的 优 先 级 默 认 低 于 关 系 运 算 符, 所 以 两 个 逻 辑 运 算 被 优 先 处 理, 结 果 就 是 true && true 更 多 的 运 算 符 优 先 级 如 表 3-9 所 示 117
30 Java Web 实 战 开 发 完 全 学 习 手 册 表 3-9 运 算 符 的 优 先 级 优 先 级 运 算 符 描 述 结 合 性 由 高 到 低 排 序 () 括 号 从 左 到 右 递 增 或 递 减 从 右 到 左! 逻 辑 非 从 右 到 左 * / % 乘 法 除 法 取 模 从 左 到 右 + - 加 法 减 法 从 左 到 右 + 拼 接 从 左 到 右 < <= 小 于 小 于 等 于 从 左 到 右 > >= 大 于 大 于 等 于 从 左 到 右 = =!= 等 于 不 等 于 从 左 到 右 = = =!= = 等 同 ( 类 型 相 同 ) 不 等 同 从 左 到 右 & 按 位 与 从 左 到 右 按 位 或 ^ 按 位 异 或 ~ 按 位 非 << 按 位 左 移 >> 按 位 右 移 >>> 按 位 右 移, 左 边 以 0 填 充 && 逻 辑 与 从 左 到 右 逻 辑 或 从 左 到 右?: 三 元 条 件 表 达 式 从 右 到 左 = += -= *= %= <<= >>= 赋 值 从 右 到 左 3.3 流 程 控 制 语 句 程 序 是 算 法 的 实 现, 在 实 现 算 法 时, 经 常 会 出 现 重 复 选 择 分 支 等 操 作, 这 些 操 作 控 制 程 序 的 流 程 向 正 确 的 方 向 进 行 JavaScript 提 供 了 丰 富 的 流 程 控 制 语 句 if 语 句 1. 基 本 if 语 句 if 语 句 是 使 用 最 多 的 选 择 条 件 语 句 其 含 义 是 如 果 表 达 式 的 值 为 true( 真 ) 时, 那 么 执 行 语 句 1, 否 则 执 行 语 句 2 如 果 if 或 else 后 有 多 行 语 句, 则 大 括 号 必 须 出 现, 否 则 可 省 略 语 法 格 式 如 下 if( 表 达 式 ) 语 句 1; else 118
31 语 句 2; 条 件 语 句 就 是 一 个 逻 辑 表 达 式 当 程 序 流 程 不 需 要 处 理 相 对 的 关 系 时, 可 以 省 略 else else 的 使 用 是 根 据 场 景 的 不 同 而 决 定 的 例 如, 某 市 的 驾 照 理 论 考 试,90 分 以 上 ( 含 90) 算 合 格, 其 余 为 不 合 格 if(score>=90) alert(' 考 试 通 过!'); else alert(' 考 试 未 通 过 '); 第 3章 2. 多 重 if 语 句 多 重 if 语 句 表 示 在 else 之 后 可 以 再 增 加 if 条 件 的 判 断, 用 于 两 个 以 上 分 支 时 使 用 语 法 如 下 if ( 表 达 式 1) 语 句 1 else if ( 表 达 式 2) 语 句 2 else if ( 表 达 式 3) 语 句 3 else 语 句 ; JavaScript 基 础 例 如, 某 超 市 搞 活 动, 消 费 满 100 减 2 元, 满 200 减 5 元, 满 500 减 20 元, 代 码 如 下 var money = 330; // 消 费 金 额 if(money >= 100 && money < 200) alert(' 减 2 元 '); else if(money >= 200 && money <500) alert(' 减 5 元 '); else if(money >= 500) alert(' 减 20 元 '); else alert(' 消 费 未 达 到 最 低 要 求 '); 119
32 此 代 码 演 示 了 多 重 if 语 句 的 使 用, 当 前 一 个 条 件 不 满 足 时, 会 顺 序 判 断 接 下 来 的 条 件 是 否 满 足, 如 果 都 不 满 足 则 执 行 else 语 句 在 整 个 语 句 中, 一 旦 有 条 件 满 足, 后 面 的 else...if... 语 句 则 不 会 被 执 行 注 意, 任 何 else if 语 句 都 可 以 在 不 改 变 原 有 流 程 的 情 况 下 被 多 个 单 独 的 if 语 句 代 替, 例 如 : var money = 330; // 消 费 金 额 if(money >= 100 && money < 200) alert(' 减 2 元 '); Java Web 实 战 开 发 完 全 学 习 手 册 if(money >= 200 && money <500) alert(' 减 5 元 '); if(money >= 500) alert(' 减 20 元 '); else alert(' 消 费 未 达 到 最 低 要 求 '); 从 结 果 上 来 说, 两 段 代 码 并 没 有 区 别 都 能 实 现 判 断 消 费 额 多 少 请 读 者 仔 细 分 析 一 下 这 两 段 代 码, 如 果 多 重 if 代 码 段 中 的 第 一 个 if 条 件 成 立, 下 面 的 所 有 语 句 都 不 会 执 行 而 在 单 if 代 码 段 中, 除 了 最 后 的 else 外, 所 有 if 都 会 被 执 行 一 遍, 如 果 每 个 if 语 句 中 不 是 简 单 的 一 句 提 示 信 息 而 是 大 量 操 作 的 话, 多 个 单 if 语 句 的 性 能 显 然 比 多 重 if 要 低 得 多, 这 就 是 区 别 3. 嵌 套 if 语 句 嵌 套 if 语 句 就 是 在 if 或 else 语 句 内 再 包 含 if 语 句, 并 且 被 包 含 的 if 或 者 else 语 句 内 也 可 以 再 嵌 套 语 句 语 法 : if ( 表 达 式 1) 语 句 1; if ( 表 达 式 2) 语 句 2; else 120
33 语 句 3; if ( 表 达 式 3) 语 句 4; 嵌 套 语 句 通 常 用 在 需 要 判 断 具 有 先 后 条 件 的 场 景 中, 例 如, 某 商 城 招 聘 客 服 人 员, 要 求 如 下 : 女 性, 年 龄 为 20~28 岁 代 码 如 下 var sex = ' 女 '; var age = 23; if(sex==' 女 ') if(age>=20 && age<=28) alert(' 满 足 条 件!'); else alert(' 不 满 足 条 件!'); else alert(' 不 满 足 条 件!'); // 性 别 // 年 龄 // 内 层 if // 内 层 else // 外 层 else 第 3章 JavaScript 基 础 上 面 的 代 码 在 两 层 if 语 句 中 都 使 用 了 else 子 句, 因 为 一 旦 进 入 if,else 则 不 会 执 行, 它 们 是 对 立 的, 所 以 每 个 else 只 对 同 层 的 if 起 作 用 一 个 不 成 文 的 规 定 :if 语 句 的 嵌 套 深 度 不 要 超 过 3 层 试 想 一 下, 用 户 的 工 作 是 维 护 一 段 具 有 10 层 以 上 嵌 套 深 度 的 代 码 是 什 么 感 觉 switch 语 句 switch 语 句 是 跟 if 语 句 类 似 的 选 择 语 句 其 含 义 是 当 判 断 条 件 多 于 3 个 时, 就 可 以 使 用 switch 语 句, 这 样 可 以 使 程 序 的 结 构 更 加 清 晰 switch 根 据 一 个 变 量 的 不 同 取 值 执 行 不 同 的 语 句 段 在 执 行 switch 语 句 时, 表 达 式 的 值 将 从 上 由 下 与 每 一 个 case 条 件 语 句 相 比 较 如 果 相 等, 则 执 行 该 case 语 句 后 的 JavaScript 代 码 如 果 没 有 任 何 case 语 句 与 之 表 达 式 的 值 相 等, 则 执 行 最 后 的 default 语 句 语 法 格 式 如 下 switch( 表 达 式 ) case 匹 配 条 件 1: JavaScript 语 句 1; break; case 匹 配 条 件 2: JavaScript 语 句 2; 121
34 break;... case 匹 配 条 件 m: JavaScript 语 句 m; break; default: JavaScript 语 句 x; switch 的 语 法 有 些 类 似 多 个 if 的 顺 序 执 行, 但 也 不 完 全 一 样 因 为 没 有 break 语 句 的 控 制, 将 会 发 生 一 些 预 料 不 到 的 事 情 下 面 来 看 一 个 根 据 运 算 符 号 来 进 行 算 数 的 例 子 Java Web 实 战 开 发 完 全 学 习 手 册 var ysf='*'; var n1=6; var n2=8; switch(ysf) case '-': alert(n1-n2);break; case '*': alert(n1*n2); break; case '/': alert(n1/n2); break; default: alert(n1+n2); 读 者 可 以 试 着 把 代 码 中 的 break 语 句 去 掉 这 时 如 果 变 量 ysf 值 为 '-' 的 话, 所 有 的 alert() 语 句 都 会 被 顺 序 执 行 一 遍 因 为 没 有 break 语 句, 程 序 在 执 行 完 匹 配 的 语 句 后, 所 有 后 面 的 语 句 都 会 被 执 行, 并 且 不 管 是 否 匹 配, 这 可 不 是 本 例 子 想 展 示 的 效 果 注 意 代 码 中 的 比 较 条 件, 读 者 可 能 已 经 看 出 来 了,switch 只 能 对 条 件 进 行 相 等 判 断, 而 不 像 if 语 句 那 样 支 持 复 杂 的 逻 辑 表 达 式 循 环 语 句 除 了 选 择 语 句 外, 控 制 程 序 流 程 另 一 个 重 要 的 语 句 就 是 循 环 语 句, 可 以 说 只 要 有 条 件 语 句 的 地 方, 基 本 上 都 会 出 现 循 环 语 句 循 环 是 程 序 设 计 语 言 中 反 复 执 行 某 些 代 码 的 一 种 计 算 机 处 理 过 程, 常 见 的 有 按 照 次 数 循 环 和 按 照 条 件 循 环 循 环 语 句 是 由 循 环 体 及 循 环 的 终 止 条 件 两 部 分 组 成 的 要 使 用 循 环 语 句 时, 必 须 要 确 定 循 环 体 及 条 件 ( 布 尔 表 达 式 ) 两 个 重 要 因 素, 亦 即 首 要 考 虑 的 是 要 重 复 执 行 哪 些 语 句, 要 重 复 到 什 么 时 候 为 止 下 面 介 绍 几 种 选 择 语 句 1.for 循 环 语 法 如 下 for( 初 始 化 ; 条 件 ; 更 新 表 达 式 ) JavaScript 语 句 ; 其 中, 初 始 化 参 数 指 定 循 环 的 起 始 值 条 件 是 用 于 判 断 循 环 终 止 时 的 条 件, 若 满 足 条 件, 则 继 续 执 行 循 环 语 句, 否 则 跳 出 循 环 更 新 表 达 式 是 定 义 循 环 变 量 在 每 次 循 环 时 怎 样 122
35 变 化 三 个 条 件 之 间 必 须 用 分 号 隔 开 for 语 句 中 的 三 个 表 达 式 都 可 以 为 空, 但 分 号 不 能 少, 也 就 是 说 for 可 以 这 样 写 : for(;;) JavaScript 语 句 ; 这 就 相 当 于 : while(true) JavaScript 语 句 ; 也 就 是 死 循 环, 下 面 分 析 可 选 的 三 个 表 达 式 的 含 义 例 如, 改 变 i 的 值, 每 循 环 一 次, 更 新 表 达 式 就 执 行 一 次, 直 到 循 环 结 束, 如 下 面 的 小 例 子 实 现 求 1 到 100 的 和 第 3章 JavaScript 基 var sum; for(var i=1; i<=100; i++) sum+=i; 础 2.for in 循 环 语 法 : for(var in object) JavaScript 语 句 ; for...in 循 环 语 句 只 能 用 于 对 象 for...in 语 句 可 以 通 过 循 环 将 对 象 所 有 的 属 性 显 示 出 来, 例 如 : var n = 3; var s = ''; for(var i in window) n--; s += i+":"+window[i]+'\n'; if(n==0) break; alert(s); 代 码 显 示 了 window 对 象 的 前 3 个 属 性 的 名 称 和 值, 运 行 效 果 如 图 3-37 所 示 123
36 图 3-37 for in 循 环 的 应 用 Java Web 实 战 开 发 完 全 学 习 手 册 for...in 与 for 和 while 语 句 相 比, 使 用 频 率 很 低, 而 且 for...in 语 句 的 效 率 也 不 高, 所 以 在 开 发 时 除 非 必 要, 否 则 最 好 不 使 用 for...in 语 句 3.while 循 环 while 循 环 是 比 较 容 易 理 解 的 一 种 循 环 控 制 语 句, 即 当 条 件 的 值 为 真 时, 就 重 复 执 行 JavaScript 语 句 相 反, 当 条 件 为 假 时, 就 退 出 循 环 语 法 如 下 while( 条 件 ) JavaScript 语 句 ; 4.do while 语 句 do while 和 while 循 环 非 常 相 似, 区 别 在 于 表 达 式 的 值 是 在 每 次 循 环 结 束 时 检 查 而 不 是 开 始 时 和 正 规 的 while 循 环 主 要 的 区 别 是 do while 的 循 环 语 句 保 证 会 执 行 一 次 ( 表 达 式 的 真 值 在 每 次 循 环 结 束 后 检 查 ), 然 而 在 正 规 的 while 循 环 中 就 不 一 定 了 ( 表 达 式 真 值 在 循 环 开 始 时 检 查, 如 果 一 开 始 就 为 false 则 整 个 循 环 立 即 终 止 ) 语 法 : do JavaScript 语 句 ; while( 条 件 ) 5.break 语 句 break 语 句 可 用 于 跳 出 循 环 break 语 句 跳 出 循 环 后, 会 继 续 执 行 该 循 环 之 后 的 代 码 ( 如 果 有 的 话 ), 例 如 : for (i=0;i<6;i++) 124
37 if (i==4) break; x=x + "The number is " + i + "<br>"; 6.continue 语 句 continue 语 句 和 break 语 句 相 似 所 不 同 的 是 它 不 是 退 出 一 个 循 环, 而 是 开 始 循 环 的 一 次 新 迭 代 continue 语 句 只 能 用 在 while 语 句 do while 语 句 for 语 句 或 for in 语 句 的 循 环 体 内, 在 其 他 地 方 使 用 都 会 引 起 错 误! 代 码 如 下 for(var i=1;i<=10;i++) if(i==5) continue; document.write(i); // 输 出 结 果 : 当 i=5 时, 直 接 跳 出 本 次 for 循 环, 继 续 下 次 循 环 7. 条 件 表 达 式 语 法 如 下 第 3章 JavaScript 基 础 变 量 = 布 尔 值? 值 1 : 值 2 除 了 if 和 switch 两 种 条 件 语 句 外,JavaScript 还 提 供 了 一 种 条 件 表 达 式, 用 来 完 成 简 单 的 if 操 作, 即 如 果 布 尔 值 为 真, 那 么 将 问 号 后 的 值 1 赋 给 变 量, 否 则, 将 冒 号 后 的 值 2 赋 给 变 量 值 1 或 值 2 可 以 是 表 达 式 产 生 的 结 果, 例 如 : alert(1? 1 :0); 运 行 结 果 如 图 3-38 所 示 图 3-38 使 用 条 件 表 达 式 125
38 注 意, 条 件 表 达 式 的 分 支 中 并 不 能 执 行 非 赋 值 的 语 句, 也 就 是 说 在 问 号 或 者 冒 号 后 面 如 果 是 语 句 的 话, 这 个 语 句 必 须 产 生 一 个 值, 否 则, 程 序 将 出 现 语 法 错 误 3.4 函 数 的 定 义 与 调 用 函 数 是 由 事 件 驱 动 的, 或 当 它 被 调 用 时 执 行 的 可 重 复 使 用 的 代 码 块 函 数 过 程 中 的 这 些 语 句 用 于 完 成 某 些 有 意 义 的 工 作 通 常 是 处 理 文 本, 控 制 输 入 或 计 算 数 值 通 过 在 程 序 代 码 中 引 入 函 数 名 称 和 所 需 的 参 数, 可 在 该 程 序 中 执 行 ( 或 称 调 用 ) 该 函 数 函 数 的 定 义 Java Web 实 战 开 发 完 全 学 习 手 册 函 数 就 是 包 裹 在 花 括 号 中 的 代 码 块, 前 面 使 用 了 关 键 词 function, 语 法 如 下 function functionname() // 这 里 是 要 执 行 的 代 码 函 数 的 调 用 当 调 用 该 函 数 时, 会 执 行 函 数 内 的 代 码, 可 以 在 某 事 件 发 生 时 直 接 调 用 函 数 ( 比 如 当 用 户 点 击 按 钮 时 ), 并 且 可 由 JavaScript 在 任 何 位 置 进 行 调 用 JavaScript 对 大 小 写 敏 感 关 键 词 function 必 须 是 小 写 的, 并 且 必 须 以 与 函 数 名 称 相 同 的 大 小 写 来 调 用 函 数 在 调 用 函 数 时, 可 以 向 其 传 递 值, 这 些 值 被 称 为 参 数, 这 些 参 数 可 以 在 函 数 中 使 用 此 外, 还 可 以 发 送 任 意 多 的 参 数, 由 逗 号 (,) 分 隔, 例 如 : myfunction(argument1,argument2) 当 用 户 声 明 函 数 时, 请 把 参 数 作 为 变 量 来 声 明, 例 如 : function myfunction(var1,var2) // 这 里 是 要 执 行 的 代 码 变 量 和 参 数 必 须 以 一 致 的 顺 序 出 现 第 一 个 变 量 就 是 第 一 个 被 传 递 的 参 数 的 给 定 值, 以 此 类 推, 例 如 : <button onclick="myfunction('jack','ceo')">click Me!</button> <script> 126
39 function myfunction(name,job) alert("welcome " + name + ", the " + job); </script> 上 面 的 函 数 会 当 按 钮 被 单 击 时 提 示 "Welcome Jack, the CEO" 函 数 很 灵 活, 可 以 使 用 不 同 的 参 数 来 调 用 该 函 数, 这 样 就 会 给 出 不 同 的 消 息, 例 如 : <button onclick="myfunction('john','nurse')">click Me!</button> <button onclick="myfunction('lilei','builder')"> Click Me!</button> 3.5 事 件 处 理 第 3章 事 件 是 JavaScript 应 用 跳 动 的 心 脏, 当 用 户 与 浏 览 器 中 Web 页 面 进 行 某 些 类 型 的 交 互 时, 事 件 就 发 生 了 事 件 可 能 是 用 户 在 某 些 内 容 上 的 点 击 鼠 标 经 过 某 个 特 定 元 素 或 按 下 键 盘 上 的 某 些 按 键 事 件 还 可 能 是 Web 浏 览 器 中 发 生 的 事 情, 比 如 说, 某 个 Web 页 面 加 载 完 成, 或 者 是 用 户 滚 动 窗 口 或 改 变 窗 口 大 小 通 过 使 用 JavaScript, 用 户 可 以 监 听 特 定 事 件 的 发 生, 并 规 定 让 某 些 事 件 发 生 以 对 这 些 事 件 做 出 响 应 JavaScript 基 础 事 件 处 理 程 序 事 件 就 是 用 户 或 浏 览 器 自 身 执 行 的 某 种 动 作, 如 click mouseover, 都 是 事 件 的 名 字 而 相 应 某 个 事 件 的 函 数 就 叫 事 件 处 理 程 序 ( 或 事 件 侦 听 器 ) 1.DOM0 级 事 件 处 理 程 序 将 一 个 函 数 的 返 回 值 赋 值 给 一 个 事 件 处 理 程 序 的 属 性, 例 如 : var btn = document.getelementbyid("mybtn"); btn.onclick = funtion() alert(this.id); //"mybtn" 如 果 要 删 除 事 件, 则 把 对 应 的 事 件 赋 值 为 null 即 可, 如 btn.onclick = null 2.DOM2 级 事 件 处 理 程 序 DOM2 级 事 件 定 义 的 两 个 方 法, 用 于 处 理 指 定 和 删 除 事 件 处 理 程 序 的 操 作 : addeventlistener() 和 removeeventlistener() 所 有 DOM 节 点 都 包 含 这 两 个 方 法, 接 受 3 个 参 数 : 处 理 事 件 名 作 为 事 件 处 理 程 序 的 函 数 和 一 个 布 尔 值 最 后 的 布 尔 值 参 数,true: 表 示 在 捕 获 阶 段 调 用 事 件 处 理 程 序 ;false: 表 示 在 冒 泡 阶 段 调 用 事 件 处 理 程 序 例 如 : var btn = document.getelementbyid("mybtn"); btn.addeventlistener("click",funciton() alert(this.id); 127
40 ,false); 用 DOM2 级 方 法 添 加 事 件 处 理 程 序 主 要 的 好 处 是 可 以 添 加 多 个 事 件 处 理 程 序 例 如 : var btn = document.getelementbyid("mybtn"); btn.addeventlistener("click",funciton() alert(this.id);,false); btn.addeventlistener("click",funciton() alert("hello World!");,false); Java Web 实 战 开 发 完 全 学 习 手 册 这 两 个 事 件 会 按 照 顺 序 触 发 通 过 addeventlistener() 添 加 的 事 件 只 能 用 removeeventlistener() 移 除 移 除 时 传 入 的 参 数 需 与 添 加 时 的 参 数 一 致, 也 就 是 说 匿 名 函 数 将 无 法 移 除 var btn = document.getelementbyid("mybtn"); var handler = function() alert(this.id); ; btn.addeventlistener("click", handler, false); btn.removeeventlistener("click", handler, false); 大 多 数 情 况 下, 都 是 将 事 件 处 理 程 序 添 加 到 事 件 流 的 冒 泡 阶 段, 以 便 兼 容 各 种 浏 览 器 firefox chrome safari opera 支 持 DOM2 级 事 件 处 理 程 序 3.IE 事 件 处 理 程 序 IE 实 现 了 与 DOM 中 类 似 的 两 个 方 法 :attachevent() 和 detachevent() 这 两 个 方 法 都 接 受 两 个 参 数 : 事 件 处 理 程 序 名 称 和 事 件 处 理 程 序 函 数 由 于 IE 只 支 持 时 间 冒 泡, 所 以, 通 过 attachevent() 添 加 的 事 件 处 理 程 序 都 会 被 添 加 到 冒 泡 阶 段, 例 如 : var btn = document.getelementbyid("mybtn"); btn.attachevent("onclick", function() alert("clicked"); ) 注 意,attachEvent() 的 第 一 个 参 数 是 onclick 而 非 click IE 的 attachevent() 与 DOM0 的 addeventlistener() 的 主 要 区 别 是 事 件 处 理 程 序 的 作 用 域 DOM0 级 方 法, 事 件 处 理 程 序 会 在 所 属 元 素 的 作 用 域 内 运 行 ;attachevent() 方 法, 事 件 处 理 程 序 会 在 全 局 作 用 域 中 运 行, 因 此,this 等 于 window attachevent() 也 可 以 为 一 个 元 素 添 加 多 个 事 件 处 理 程 序, 例 如 : var btn = document.getelementbyid("mybtn"); btn.attachevent("onclick", function() alert("clicked"); ) btn.attachevent("onclick", function() alert("hello World!"); ) 128
41 与 DOM 方 法 不 同 的 是, 这 些 事 件 处 理 程 序 不 是 以 添 加 顺 序 执 行, 而 是 以 相 反 的 方 向 执 行 detachevent() 的 用 法 与 removeeventlistener() 的 用 法 相 同 JavaScript 常 用 事 件 JavaScript 常 用 事 件 包 括 onclick 事 件 onload 事 件 onscroll 事 件 onblur 事 件 onfocus 事 件 onchange 事 件 onsubmit 事 件 onkeydown 事 件 settimeout 事 件 和 cleartimeout 事 件 等 1. 常 用 事 件 (1)onclick 事 件 鼠 标 单 击 事 件, 通 常 在 下 列 基 本 对 象 中 产 生 : button( 按 钮 对 象 ) checkbox( 复 选 框 ) 或 ( 检 查 列 表 框 ) radio( 单 选 钮 ) reset buttons ( 重 置 按 钮 ) submit button( 提 交 按 钮 ) 例 如, 可 通 过 下 列 按 钮 激 活 change() 文 件 第 3章 JavaScript 基 <Form> <Input type="button" Value="" onclick="change()"> </Form> 础 (2)onLoad 事 件 页 面 加 载 事 件 : 当 页 面 加 载 时, 自 动 调 用 函 数 ( 方 法 ) 此 方 法 只 能 写 在 <body> 标 签 之 中! (3)onScroll 事 件 窗 口 滚 动 事 件 : 当 页 面 滚 动 时 调 用 函 数 此 事 件 写 在 方 法 的 外 面, 且 函 数 名 ( 方 法 名 ) 后 不 加 括 号! 例 如 : window.onscroll=move; (4)onBlur 事 件 失 去 焦 点 事 件 : 当 光 标 离 开 文 本 框 是 触 发 调 用 函 数 当 text 对 象 或 textarea 对 象 及 select 对 象 不 再 拥 有 焦 点, 而 退 到 后 台 时, 引 发 该 文 件, 它 与 onfocus 事 件 是 一 个 对 应 的 关 系 (5)onFocus 事 件 光 标 进 入 文 本 框 时 触 发 调 用 函 数 当 用 户 单 击 Text 或 textarea 以 及 select 对 象 时, 产 生 该 事 件 (6)onChange 事 件 129
42 文 本 框 的 value 值 发 生 改 变 时 调 用 函 数 当 利 用 text 或 textarea 元 素 输 入 字 符 值 改 变 时 发 该 事 件, 同 时 当 在 select 表 格 项 中 一 个 选 项 状 态 改 变 后 也 会 引 发 该 事 件, 例 如 : <Form> <Input type="text" name="test" value="test" oncharge="check('this.test)"> </Form> (7)onSubmit 事 件 属 于 <form> 表 单 元 素, 写 在 <form> 表 单 标 签 内 语 法 如 下 onsubmit="return 函 数 名 ()" Java Web 实 战 开 发 完 全 学 习 手 册 (8)onKeyDown 事 件 在 输 入 框 中 按 下 键 盘 上 的 任 何 一 个 键 时, 都 会 触 发 事 件, 调 用 函 数 此 事 件 写 在 方 法 的 外 面, 且 函 数 名 ( 方 法 名 ) 后 不 加 括 号! 例 如 : document.onkeydown= 函 数 名 () (9)setTimeout 事 件 此 事 件 可 以 以 一 定 的 毫 秒 数 定 时 执 行 一 个 已 经 定 义 好 的 函 数 语 法 如 下 settimeout(" 函 数 名 ()", 间 隔 时 间 ( 以 毫 秒 为 单 位 )); (10)clearTimeout( 对 象 ) 清 除 已 设 置 的 settimeout 对 象 (11)onMouseOver: 鼠 标 移 动 到 某 对 象 范 围 的 上 方 时, 触 发 事 件 调 用 函 数 在 同 一 个 区 域 之 内, 无 论 怎 样 移 动 都 只 触 发 一 次 函 数 (12)onMouseOut: 鼠 标 离 开 某 对 象 范 围 时, 触 发 事 件 调 用 函 数 (13)onMouseMove: 鼠 标 移 动 到 某 对 象 范 围 的 上 方 时, 触 发 事 件 调 用 函 数 在 同 一 个 区 域 之 内, 只 要 移 动 一 次 就 触 发 一 次 事 件 调 用 一 次 函 数 (14)onmouseup: 当 鼠 标 松 开 时 触 发 (15)onmousedown: 当 鼠 标 按 下 键 时 触 发 130
43 2.document 对 象 常 用 的 方 法 (1)document.getElementById() 通 过 ID 获 得 唯 一 的 一 个 HTML 元 素, 没 有 ID 时, 通 过 name 查 找 匹 配 (2)document.getElementByName() 获 取 相 同 名 称 的 一 组 元 素, 主 要 用 于 表 单 中 的 复 选 框 3.Date 对 象 常 用 方 法 Var a=new Date(); // 创 建 a 为 一 个 新 的 日 期 对 象 y=a.getyear(); //y 的 值 为 从 对 象 a 中 获 取 年 份 值, 两 位 数 年 份 y1=a.getfullyear(); // 获 取 全 年 份 数, 四 位 数 年 份 m=a.getmonth(); // 获 取 月 份 值 (0~11) d=a.getdate(); // 获 取 日 期 值 d1=a.getday(); // 获 取 当 前 星 期 值 h=a.gethours(); // 获 取 当 前 小 时 数 m1=a.getminutes(); // 获 取 当 前 分 钟 数 s=a.getseconds(); // 获 取 当 前 秒 钟 数 3.6 常 用 对 象 第 3章 JavaScript 基 础 JavaScript 常 用 对 象 包 括 : 数 组 (Array) 对 象 字 符 串 (String) 对 象 数 学 (Math) 对 象 及 日 期 (Date) 对 象 等 数 组 对 象 数 组 对 象 用 于 在 单 个 的 变 量 中 存 储 多 个 值 1. 新 建 数 组 var Obj = new Array();// 新 建 一 个 长 度 为 零 的 数 组 var Obj = new Array([size]);// 新 建 一 个 指 定 长 度 n 的 数 组 var Obj = new Array([element0[, element1[,...[, elementn]]]]);// 新 建 一 个 指 定 长 度 的 数 组, 并 赋 值 数 组 中 的 序 列 号 是 从 0 开 始 计 算 如 果 要 引 用 数 组 中 的 元 素, 则 使 用 : 数 组 变 量 [i] = 值 ; 变 量 名 = 数 组 变 量 [i] 2. 动 态 数 组 JavaScript 数 组 的 长 度 不 是 固 定 不 变 的, 如 果 要 增 加 数 组 的 长 度, 只 要 直 接 赋 值 一 个 新 元 素 就 可 以 了, 例 如 : 数 组 变 量 [ 数 组 变 量. 长 度 ] = 值 ; 131
44 Java Web 实 战 开 发 完 全 学 习 手 册 3. 数 组 常 用 方 法 concat(array1,arrayn): 将 两 个 或 两 个 以 上 的 数 组 值 连 接 起 来, 合 并 后 返 回 结 果 join(string): 将 数 组 中 元 素 合 并 为 字 符 串,string 为 分 隔 符 如 省 略 参 数 则 直 接 合 并, 不 再 分 隔 pop(): 移 除 数 组 中 的 最 后 一 个 元 素 并 返 回 该 元 素 push(value): 在 数 组 的 末 尾 加 上 一 个 或 多 个 元 素, 并 且 返 回 新 的 数 组 长 度 值 reverse(): 颠 倒 数 组 中 元 素 的 顺 序, 反 向 排 列 shift(): 移 除 数 组 中 的 第 一 个 元 素 并 返 回 该 元 素 sort(compare Function): 在 未 指 定 排 序 号 的 情 况 下, 按 照 元 素 的 字 母 顺 序 排 列, 如 果 不 是 字 符 串 类 型, 则 转 换 成 字 符 串 再 排 序, 返 回 排 序 后 的 数 组 splice(): 从 一 个 数 组 中 移 除 一 个 或 多 个 元 素, 如 果 必 要, 在 所 移 除 元 素 的 位 置 上 插 入 新 元 素, 返 回 所 移 除 的 元 素 tosource(): 显 示 对 象 的 源 代 码 tostring(): 将 数 组 所 有 元 素 返 回 一 个 字 符 串, 其 间 用 逗 号 分 隔 unshift(value): 为 数 组 的 开 始 部 分 加 上 一 个 或 多 个 元 素, 并 且 返 回 该 数 组 的 新 长 度 string 对 象 String 对 象 用 于 处 理 文 本 ( 字 符 串 ) 字 符 串 对 象 的 属 性 如 下 Length: 返 回 字 符 串 的 字 符 长 度 字 符 串 对 象 的 方 法 如 表 3-10 所 示 big() blink() bold() fontcolor(color) fontsize(size) link(url) small() strike() sub() sup() charat(index) concat(string2) indexof(searchstring startindex) lastlndexof(searchstring startindex) 表 3-10 字 符 串 对 象 的 方 法 与 含 义 方 法 含 义 把 字 符 串 中 的 文 本 变 成 大 字 体 (<BIG>) 把 字 符 串 中 的 文 本 变 成 闪 烁 字 体 (<BLINK>) 把 字 符 串 中 的 文 本 变 成 黑 字 体 (<B>) 设 置 字 符 串 中 文 本 的 颜 色 (<FONT) 把 字 符 串 中 的 文 本 变 成 指 定 大 小 (<FONTSIZE=>) 用 来 把 字 符 串 转 换 -HTML 链 接 标 记 中 (<A HREF=>) 把 字 符 串 中 的 文 本 变 成 小 字 体 (<SMALL>) 把 字 符 串 中 的 文 本 变 成 划 掉 字 体 (<STRIKE>) 把 字 符 串 中 的 文 本 变 成 下 标 (subscript) 字 体 (<SUB>) 把 字 符 串 中 的 文 本 变 成 上 标 (superscript) 字 体 (<SUP>) 返 回 指 定 索 引 处 的 字 符 连 接 两 条 或 多 条 字 符 串 返 回 字 符 串 中 第 一 个 出 现 指 定 字 符 串 的 位 置 返 回 字 符 串 中 最 后 一 个 出 现 指 定 字 符 串 的 位 置 132
45 slice(startindex, endindex) split(delimiter) substr(startindex, length) substring(startindex, endindex) tolowercase() touppercase() 方 法 含 义 续 表 将 部 分 字 符 抽 出 并 在 新 的 字 符 串 中 返 回 剩 余 部 分 将 字 符 串 分 配 为 数 组 从 startindex 开 始 取 length 个 字 符 取 startindex 和 endindex 之 间 的 字 符, 不 包 括 endindex 把 字 符 串 中 的 文 本 变 成 小 写 把 字 符 串 中 的 文 本 变 成 大 写 数 学 对 象 数 学 对 象 Math 用 于 执 行 数 学 任 务 数 学 对 象 属 性 如 表 3-11 所 示 表 3-11 数 学 对 象 的 属 性 与 含 义 属 性 含 义 E 欧 拉 常 量, 自 然 对 数 的 底 ( 约 等 于 2.718) LN2 2 的 自 然 对 数 ( 约 等 于 0.693) LN10 10 的 自 然 对 数 ( 约 等 于 2.302) LOG2E 以 2 为 底 的 e 的 对 数.( 约 等 于 1.442) LOG10E 以 10 为 底 的 e 的 对 数 ( 约 等 于 0.434) PI 的 值 ( 约 等 于 ) 第 3章 JavaScript 基 础 数 学 对 象 的 方 法 如 表 3-12 所 示 表 3-12 数 学 对 象 的 方 法 与 含 义 属 性 含 义 SQRT(1/2) 1/2(0.5) 的 平 方 根 ( 即 l 除 以 2 的 平 方 根, 约 等 于 o.707) SQRT(2) 2 的 平 方 根 ( 约 等 于 1.414) abs(x) 返 回 数 字 的 绝 对 值 acos(x) 返 回 数 字 的 反 余 弦 值 asin(x) 返 回 数 字 的 反 正 弦 值 atan(x) 返 回 位 于 -PI/2 和 PI/2 的 反 正 切 值 ceil(x) 返 回 比 x 大 的 最 小 整 数 cos(x) 返 回 一 个 数 字 的 余 弦 值 exp(x) 返 回 E^x 值 floor(x) 返 回 比 x 小 的 最 大 整 数 log(x) 返 回 底 数 为 E 的 自 然 对 数 max(x,y) 返 回 x 和 y 之 间 较 大 的 数 min(x,y) 返 回 x 和 y 之 间 较 小 的 数 pow(x,y) 返 回 y^x 的 值 random() 返 回 位 于 0 到 1 之 间 的 随 机 函 数 round(x) 四 舍 五 入 后 取 整 sin(x) 返 回 数 字 的 正 弦 值 sqrt(x) 返 回 数 字 的 平 方 根 tan(x) 返 回 一 个 角 度 的 正 切 值 133
46 3.6.4 date 对 象 Date 对 象 用 于 处 理 日 期 和 时 间 日 期 对 象 的 主 要 方 法 如 表 3-13 所 示 Java Web 实 战 开 发 完 全 学 习 手 册 表 3-13 日 期 对 象 的 方 法 与 含 义 属 性 含 义 getday() 返 回 一 周 中 的 第 几 天 (0~6) etyear() getfullyear() 返 回 年 份,2000 年 以 前 为 2 位,2000( 包 含 ) 以 后 为 4 位 返 回 完 整 的 4 位 年 份 数 getmonth() 返 回 月 份 数 (0~11) getdate() 返 回 日 (1~31) gethours() 返 回 小 时 数 (0~23) getminutes() 返 回 分 钟 (0~59) getseconds() 返 回 秒 数 (0~59) getmilliseconds() 返 回 毫 秒 (0~999) gettime() setyear(yearint) setfullyear(yearint) 返 回 从 1970 年 1 月 1 号 0:0:0 到 现 在 一 共 花 去 的 毫 秒 数 设 置 年 份,2 位 数 或 4 位 数 设 置 年 份,4 位 数 setmonth(monthint) 设 置 月 份 (0~11) setdate(dateint) 设 置 日 (1~31) sethours(hourint) 设 置 小 时 数 (0~23) setminutes(minint) 设 置 分 钟 数 (0~59) setseconds(secint) 设 置 秒 数 (0~59) setmilliseconds(milliint) 设 置 毫 秒 (0~999) settime(timeint) tosource() 设 置 从 1970 年 1 月 1 日 开 始 的 时 间, 毫 秒 数 显 示 对 象 的 源 代 码 3.7 dom 技 术 DOM 可 被 JavaScript 用 来 读 取 改 变 HTML XHTML 及 XML 文 档 通 过 JavaScript, 用 户 可 以 重 构 整 个 HTML 文 档 可 以 添 加 移 除 改 变 或 重 排 页 面 上 的 项 目 要 改 变 页 面 的 某 个 东 西,JavaScript 就 需 要 对 HTML 文 档 中 所 有 元 素 进 行 访 问 的 入 口, 这 个 入 口, 连 同 对 HTML 元 素 进 行 添 加 移 动 改 变 或 移 除 的 方 法 和 属 性, 都 是 通 过 文 档 对 象 模 型 来 获 得 的 (DOM) dom 的 分 层 结 构 DOM 由 核 心 XML 及 HTML 三 部 分 构 成, 其 级 别 分 别 为 DOM Level 1/2/3 核 心 134
47 DOM(Core DOM) 定 义 了 一 套 标 准 的 针 对 任 何 结 构 化 文 档 的 对 象 XML DOM 定 义 了 一 套 标 准 的 针 对 XML 文 档 的 对 象 HTML DOM 定 义 了 一 套 标 准 的 针 对 HTML 文 档 的 对 象 HTML 文 档 中 的 每 个 成 分 都 是 一 个 节 点 DOM 是 这 样 规 定 的 整 个 文 档 是 一 个 文 档 节 点 每 个 HTML 标 签 是 一 个 元 素 节 点 包 含 在 HTML 元 素 中 的 文 本 是 文 本 节 点 每 一 个 HTML 属 性 是 一 个 属 性 节 点 注 释 属 于 注 释 节 点 节 点 彼 此 都 有 等 级 关 系 HTML 文 档 中 的 所 有 节 点 组 成 了 一 个 文 档 树 ( 或 节 点 树 ) HTML 文 档 中 的 每 个 元 素 属 性 文 本 等 都 代 表 着 树 中 的 一 个 节 点 树 起 始 于 文 档 节 点, 并 由 此 继 续 伸 出 枝 条, 直 到 处 于 这 棵 树 最 低 级 别 的 所 有 文 本 节 点 为 止 例 如 : 第 3章 JavaScript 基 <html> <head> <title>dom </title> </head> <body> <h1>dom Study</h1> <p>hello World!</p> </body> </html> 础 上 面 所 有 的 节 点 彼 此 间 都 存 在 关 系, 除 文 档 节 点 之 外 的 每 个 节 点 都 有 父 节 点 如 <head> 和 <body> 的 父 节 点 是 <html> 节 点, 文 本 节 点 "Hello World!" 的 父 节 点 是 <p> 节 点 大 部 分 元 素 节 点 都 有 子 节 点 比 如,<head> 节 点 有 一 个 子 节 点 :<title> 节 点,<title> 节 点 也 有 一 个 子 节 点 : 文 本 节 点 "DOM Study" 当 节 点 分 享 同 一 个 父 节 点 时, 它 们 就 是 同 级 节 点, 如 <h1> 和 <p> 是 同 级 节 点, 因 为 它 们 的 父 节 点 均 是 <body> 节 点 节 点 也 可 以 拥 有 后 代, 后 代 指 某 个 节 点 的 所 有 子 节 点, 或 者 这 些 子 节 点 的 子 节 点, 以 此 类 推 比 如 说, 所 有 的 文 本 节 点 都 是 <html> 节 点 的 后 代, 而 第 一 个 文 本 节 点 是 <head> 节 点 的 后 代 节 点 也 可 以 拥 有 先 辈 先 辈 是 某 个 节 点 的 父 节 点, 或 者 父 节 点 的 父 节 点, 以 此 类 推 比 如, 所 有 的 文 本 节 点 都 可 把 <html> 节 点 作 为 先 辈 节 点 查 找 并 访 问 节 点 可 通 过 若 干 种 方 法 来 查 找 希 望 操 作 的 元 素 1. 通 过 使 用 getelementbyid() 和 getelementsbytagname() 方 法 getelementbyid() 和 getelementsbytagname() 这 两 种 方 法, 可 查 找 整 个 HTML 文 档 中 的 任 何 HTML 元 素, 这 两 种 方 法 会 忽 略 文 档 的 结 构 假 如 希 望 查 找 文 档 中 所 有 的 <p> 元 素, getelementsbytagname() 会 把 它 们 全 部 找 到, 不 管 <p> 元 素 处 于 文 档 中 的 哪 个 层 次 同 时, 135
48 getelementbyid() 方 法 也 会 返 回 正 确 的 元 素, 不 论 它 被 隐 藏 在 文 档 结 构 中 的 什 么 位 置 当 然 这 两 种 方 法 会 提 供 任 何 所 需 要 的 HTML 元 素, 不 论 它 们 在 文 档 中 所 处 的 位 置! getelementbyid() 可 通 过 指 定 的 ID 来 返 回 元 素 getelementbyid() 语 法 如 下 document.getelementbyid("id"); getelementbyid() 无 法 工 作 在 XML 中 在 XML 文 档 中, 用 户 必 须 通 过 拥 有 类 型 ID 的 属 性 来 进 行 搜 索, 而 此 类 型 必 须 在 XML DTD 中 进 行 声 明 Java Web 实 战 开 发 完 全 学 习 手 册 getelementsbytagname() 方 法 会 使 用 指 定 的 标 签 名 返 回 所 有 的 元 素 ( 作 为 一 个 节 点 列 表 ), 这 些 元 素 是 用 户 在 使 用 此 方 法 时 所 处 元 素 的 后 代 getelementsbytagname() 可 被 用 于 任 何 的 HTML 元 素 getelementsbytagname() 语 法 如 下 document.getelementsbytagname(" 标 签 名 称 "); 或 者 document.getelementbyid('id').getelementsbytagname(" 标 签 名 称 "); 下 面 代 码 会 返 回 文 档 中 所 有 <p> 元 素 的 一 个 节 点 列 表 document.getelementsbytagname("p") 下 面 的 代 码 会 返 回 所 有 <p> 元 素 的 一 个 节 点 列 表, 且 这 些 <p> 元 素 必 须 是 ID 为 "maindiv" 的 元 素 的 后 代 document.getelementbyid('maindiv').getelementsbytagname("p") 2. 通 过 使 用 一 个 元 素 节 点 的 parentnode firstchild 以 及 lastchild 属 性 parentnode firstchild 及 lastchild 这 三 个 属 性 可 遵 循 文 档 的 结 构, 在 文 档 中 进 行 短 距 离 的 旅 行 请 看 下 面 这 个 HTML 片 段 <table> <tr> <td>john</td> <td>lilei</td> <td>hanmeimei</td> </tr> </table> 在 上 面 的 HTML 代 码 中, 第 一 个 <td> 是 <tr> 元 素 的 首 个 子 元 素 (firstchild), 而 最 后 一 个 <td> 是 <tr> 元 素 的 最 后 一 个 子 元 素 (lastchild) 此 外,<tr> 是 每 个 <td> 元 素 的 父 节 点 (parentnode) 对 firstchild 最 普 遍 的 用 法 是 访 问 某 个 元 素 的 文 本 var x=[a paragraph]; var text=x.firstchild.nodevalue; 136
49 parentnode 属 性 常 被 用 来 改 变 文 档 的 结 构 假 设 您 希 望 从 文 档 中 删 除 带 有 Id 为 "maindiv" 的 节 点 var x=document.getelementbyid("maindiv"); x.parentnode.removechild(x); 首 先, 用 户 需 要 找 到 带 有 指 定 ID 的 节 点, 然 后 移 至 其 父 节 点 并 执 行 removechild() 方 法 3. 对 特 殊 节 点 的 访 问 有 两 种 特 殊 的 文 档 属 性 可 用 来 访 问 根 节 点,document.documentElement 和 document.body 第 一 个 属 性 可 返 回 存 在 于 XML 及 HTML 文 档 中 的 文 档 根 节 点 第 二 个 属 性 是 对 HTML 页 面 的 特 殊 扩 展, 提 供 了 对 <body> 标 签 的 直 接 访 问 HTML DOM 节 点 信 息 如 下 nodename nodevalue 及 nodetype 包 含 有 关 于 节 点 的 信 息 每 个 节 点 都 拥 有 包 含 着 关 于 节 点 某 些 信 息 的 属 性, 这 些 属 性 如 下 nodename( 节 点 名 称 ) nodevalue( 节 点 值 ) nodetype( 节 点 类 型 ) nodename nodename 属 性 含 有 某 个 节 点 的 名 称 元 素 节 点 的 nodename 是 标 签 名 称 属 性 节 点 的 nodename 是 属 性 名 称 文 本 节 点 的 nodename 永 远 是 #text 文 档 节 点 的 nodename 永 远 是 #document 第 3章 JavaScript 基 础 nodename 所 包 含 的 XML 元 素 的 标 签 名 称 永 远 是 大 写 的 nodevalue 对 于 文 本 节 点,nodeValue 属 性 包 含 文 本 对 于 属 性 节 点,nodeValue 属 性 包 含 属 性 值 nodevalue 属 性 对 于 文 档 节 点 和 元 素 节 点 是 不 可 用 的 nodetype nodetype 属 性 可 返 回 节 点 的 类 型 最 重 要 的 节 点 类 型 如 下 元 素 类 型 节 点 类 型 元 素 1 属 性 2 文 本 3 注 释 8 文 档 9 137
50 下 面 通 过 一 个 例 子 向 读 者 展 示 当 一 个 用 户 在 文 档 中 点 击 时,HTML 文 档 的 背 景 颜 色 如 何 被 改 变 Java Web 实 战 开 发 完 全 学 习 手 册 <html> <head> <script type="text/javascript"> function ChangeColor() document.body.bgcolor="red" </script> </head> <body onclick="changecolor()"> Click Me! </body> </html> 图 3-39 图 3-40 分 别 展 示 了 以 上 例 子 页 面 加 载 后 的 效 果 及 单 击 页 面 后 的 效 果 图 3-39 页 面 加 载 后 的 效 果 图 3-40 单 击 页 面 后 的 效 果 138
51 3.8 with 语 句 with 语 句 并 不 是 用 来 控 制 程 序 流 程 的 语 句, 其 作 用 是 简 化 代 码 的 编 写 with 语 句 需 要 一 个 对 象 作 为 它 的 参 数 当 with 语 句 体 内 的 代 码 都 需 要 引 用 这 个 对 象 时,with 的 作 用 就 显 示 出 来 了 语 法 如 下 with(object) 语 句 第 3章 例 如 : // 不 使 用 with 语 句 alert(math.pow(math.abs(-5), 2)); // 使 用 with 语 句 with(math) alert(pow(abs(-5), 2)); JavaScript 基 础 上 面 两 段 代 码 具 有 相 同 的 效 果, 可 以 看 到, 当 with 语 句 体 内 的 引 用 越 多 时, 效 果 越 明 显, 但 读 者 要 明 白, 这 只 是 代 码 编 写 上 的 一 种 变 通, 如 果 频 繁 地 使 用 with 语 句, 将 导 致 程 序 整 体 性 能 的 降 低 3.9 异 常 控 制 语 句 虽 然 是 脚 本 语 言, 但 作 为 一 种 使 用 频 率 很 高 并 且 能 够 创 建 出 大 型 应 用 的 便 捷 脚 本 语 言,JavaScript 提 供 了 目 前 主 流 编 程 语 言 都 有 的 异 常 控 制 功 能 异 常 控 制 可 以 帮 助 开 发 者 预 防 那 些 可 能 出 现 的 错 误, 例 如, 使 用 未 定 义 的 变 量 或 在 循 环 语 句 中 导 致 循 环 变 量 变 成 非 数 值 从 而 引 发 程 序 错 误 等 一 旦 开 发 者 捕 获 了 这 些 错 误, 就 可 以 做 出 一 些 处 理, 防 止 这 些 错 误 中 断 程 序 或 导 致 其 他 不 好 的 用 户 体 验, 例 如, 可 以 弹 出 提 示 框 告 诉 用 户 什 么 地 方 出 现 了 错 误 对 用 户 来 说, 这 就 是 人 性 化 异 常 的 产 生 程 序 中 的 任 何 错 误 都 会 引 发 异 常, 在 JavaScript 版 本 3 中 错 误 地 被 分 为 很 多 类 型, 常 见 的 错 误 包 括 语 法 错 误 类 型 错 误 和 对 象 引 用 错 误 等 139
52 1. 语 法 错 误 语 法 错 误 是 初 学 者 最 容 易 犯 的 一 种 错 误 常 见 的 错 误 方 式 如 表 3-14 所 示 表 3-14 常 见 的 语 法 错 误 错 误 代 码 错 误 分 析 正 确 代 码 int num = 1; JavaScript 中 声 明 变 量 不 区 分 类 型 var num = 1; Function x(int a) 关 键 字 大 小 写 错 误, 参 数 无 类 型 function x(a) for(i=0; i++) 缺 少 判 断 条 件 for(i=0; i<1; i++) 语 法 错 误 很 常 见 但 也 最 容 易 避 免, 只 要 在 编 写 代 码 时 仔 细 检 查, 或 者 使 用 有 提 示 功 能 的 开 发 工 具 就 可 以 最 大 限 度 地 避 免 语 法 错 误 的 发 生 2. 类 型 错 误 类 型 错 误 通 常 都 和 对 象 有 关 如 果 对 基 本 类 型 的 变 量 使 用 对 象 操 作 符 new: Java Web 实 战 开 发 完 全 学 习 手 册 alert(new 1); 系 统 就 会 抛 出 一 个 严 重 的 类 型 异 常, 如 图 3-41 所 示 图 3-41 FF3 中 的 异 常 提 示 错 误 提 示 是 说 1 不 是 一 个 构 造 函 数, 这 种 错 误 通 常 是 不 会 出 现 的, 当 然 前 提 是 在 学 习 过 对 象 的 概 念 以 后 3. 对 象 引 用 错 误 这 个 错 误 也 是 由 对 象 引 起 的, 通 常 是 使 用 了 对 象 不 存 在 的 属 性 简 单 来 说, 就 是 程 序 中 使 用 了 一 个 不 存 在 的 东 西, 例 如, 在 函 数 中 使 用 了 一 个 未 声 明 的 变 量 在 JavaScript 中, 有 些 其 他 语 言 中 的 异 常 是 不 会 出 现 的, 例 如, 除 数 为 0 时 将 得 到 一 个 Infinity 的 值, 而 不 是 抛 出 错 误 不 同 类 型 的 数 据 之 间 运 算 也 不 会 报 错, 例 如, 数 值 和 字 符 做 运 算, 将 得 到 一 个 NaN 的 值 异 常 的 捕 获 使 用 try catch 语 句 可 以 对 异 常 进 行 捕 获, 捕 获 异 常 可 以 防 止 错 误 对 try catch 语 句 外 的 其 他 流 程 造 成 影 响, 它 就 像 个 家 长 一 样, 随 时 观 察 着 自 己 的 孩 子 语 法 如 下 try JavaScript 语 句 ; 140
53 catch(e) 异 常 处 理 Finally 异 常 处 理 未 使 用 异 常 捕 获 时, 一 旦 程 序 发 生 错 误, 程 序 流 就 会 被 中 断, 之 后 的 代 码 就 不 会 被 执 行 了, 例 如 : var x = ""; x += " 进 入 ->"; var j = i; //i 是 一 个 未 定 义 的 变 量, 发 生 异 常, 中 断 程 序 流 x += " 永 远 不 会 执 行 的 语 句 ->"; 第 3章 // 程 序 流 被 中 断, 未 弹 出 提 示 框 alert(x); 遇 见 这 种 情 况 的 最 好 解 决 办 法 就 是 通 过 增 加 代 码 间 的 alert() 语 句, 这 样 通 过 确 定 哪 个 alert() 语 句 没 有 执 行 时, 便 可 以 快 速 地 定 位 错 误 代 码, 例 如 : JavaScript 基 础 var x = ""; x += " 进 入 ->"; alert(" 跟 踪 点 1"); var j = i; //i 是 一 个 未 定 义 的 变 量, 发 生 异 常, 中 断 程 序 流 alert(" 跟 踪 点 2"); x += " 永 远 不 会 执 行 的 语 句 ->"; // 程 序 流 被 中 断, 未 弹 出 提 示 框 alert(x); 执 行 的 结 果 是 只 有 跟 踪 点 1 可 以 出 现 在 提 示 框 中, 而 之 后 就 发 生 了 异 常 使 用 try catch 语 句 后 不 但 可 以 防 止 程 序 流 被 中 断, 还 能 得 到 错 误 的 具 体 信 息, 例 如 : var x = ""; try x += " 进 入 ->"; var j = i; //i 是 一 个 未 定 义 的 变 量, 发 生 异 常 x += " 永 远 不 会 执 行 的 语 句 ->"; catch(e) x += " 异 常 处 理 1->"; // 未 被 捕 获 的 异 常, 可 以 解 除 下 面 的 注 释 来 观 察 效 果 //var j = i; finally x += " 异 常 处 理 2"; 141
54 // 程 序 流 未 被 中 断, 弹 出 提 示 框 alert(x); 运 行 结 果 如 图 3-42 所 示 Java Web 实 战 开 发 完 全 学 习 手 册 图 3-42 错 误 提 示 使 用 try catch 语 句 对 错 误 代 码 进 行 监 控 后 会 捕 获 异 常, 错 误 就 只 会 影 响 try 后 面 的 大 括 号 内 的 语 句 执 行, 并 没 有 影 响 try catch 语 句 外 的 alert() 语 句 执 行, 所 以, 浏 览 器 弹 出 了 提 示 框 从 图 3-41 中 可 以 看 到 异 常 出 现 后 try...catch 语 句 的 执 行 顺 序 (1) 在 错 误 语 句 之 后 的 语 句 是 不 会 被 执 行 的 (2) 抛 出 的 错 误 被 try catch 语 句 捕 获 后 进 入 catch 子 句,catch 子 句 可 以 获 取 发 生 异 常 的 具 体 信 息 例 如 : //e 是 一 个 错 误 对 象, 当 异 常 发 生 时 系 统 会 自 动 将 一 个 错 误 对 象 当 作 catch 子 句 的 参 数 传 递 过 来 try //... catch(e) // 显 示 错 误 信 息 alert(e.message) (3) 无 论 异 常 是 否 发 生, 最 后 finally 子 句 都 会 被 执 行, 但 它 是 可 以 省 略 的, 就 像 if 语 句 中 的 else 子 句 也 不 是 必 需 的 虽 然 catch 语 句 本 身 是 用 来 捕 获 异 常 的, 但 catch 子 句 中 包 含 的 代 码 同 样 可 能 发 生 异 常, 这 些 异 常 需 要 进 行 再 次 捕 获, 否 则 将 影 响 外 层 的 异 常 捕 获, 例 如, 代 码 中 catch 子 句 中 注 释 的 语 句 部 分, 就 需 要 在 catch 子 句 中 嵌 套 try catch 语 句 142
55 3.10 本 章 小 结 本 章 主 要 介 绍 了 Javascript 的 相 关 知 识 分 别 从 JavaScript 的 基 础 ( 数 据 类 型 常 量 变 量 运 算 符 ) JavaScript 的 流 程 控 制 语 句 函 数 的 定 义 与 调 用 循 环 语 句 和 JavaScript 的 常 用 事 件 和 对 象, 以 及 dom 和 异 常 的 相 关 知 识 来 介 绍, 使 读 者 了 解 了 JavaScript 基 本 结 构 和 JavaScript 脚 本 的 执 行 原 理 3.11 上 机 练 习 第 3章 1. 使 用 嵌 套 循 环 打 印 一 个 由 组 成 的 矩 形, 矩 形 有 5 行, 每 行 9 个 提 示 : 外 层 循 环 控 制 打 印 行 数 内 层 循 环 控 制 打 印 列 数 2. 使 用 嵌 套 循 环 打 印 9 9 乘 法 表 3. 写 出 一 个 冒 泡 排 序 算 法 JavaScript 基 础 143
Microsoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
新・解きながら学ぶJava
481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --
untitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
Microsoft Word - 第3章.doc
Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck
1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10
Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1
CC213
: (Ken-Yi Lee), E-mail: [email protected] 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,
FY.DOC
高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主
13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费
助 理 电 子 商 务 考 试 真 题 试 题 第 一 部 分 : 理 论 部 分 一 单 项 选 择 题 1 ( B ) 是 信 息 系 统 的 核 心 组 成 部 分 A 逻 辑 模 型 B 数 据 库 C 概 念 模 型 D 以 上 全 部 2 ping www.163.com -t 中 参 数 t 的 作 用 是 :( A ) A 进 行 连 续 测 试 B 在 新 窗 口 中 显 示 C
新版 明解C++入門編
511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,
06 01 action JavaScript action jquery jquery AJAX CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS b
06 01 action JavaScript action jquery jquery AJAX 04 4-1 CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS background-color camel-cased DOM backgroundcolor.css()
3.1 num = 3 ch = 'C' 2
Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:
全国计算机技术与软件专业技术资格(水平)考试
全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明
得 到 了 補 償. 對 於 武 姜 而 言, 莊 公 與 自 己 的 關 係 並 不 親 密, 而 共 叔 段 又 是 自 己 向 來 疼 愛 有 加 的 兒 子, 所 以, 對 莊 公 提 出 再 怎 麼 無 理 的 要 求, 武 姜 也 不 會 覺 得 有 什 麼 不 妥 之 處, 而 對 共
左 傳 - 鄭 伯 克 段 於 鄢 人 物 心 理 1021141 林 詩 倩 一. 緒 論 鄭 伯 克 段 於 鄢, 及 共 叔 段 之 亂, 是 魯 隱 公 元 年, 即 公 元 前 722 年, 春 秋 初 年 在 鄭 國 國 內 發 生 的 一 場 內 亂. 武 姜 成 為 武 公 夫 人 並 先 後 為 武 公 生 下 了 兩 個 兒 子, 長 子 莊 公 由 於 腳 先 出 來 造 成
一 耀 州 青 瓷 的 裝 飾 手 法 與 紋 飾 種 類 耀 州 窯 的 裝 飾 紋 樣, 豐 富 多 變, 而 且 題 材 內 容 廣 泛, 組 合 形 式 多 樣, 圖 案 形 象 優 美, 令 人 賞 心 悅 目, 並 且 反 映 了 當 時 社 會 的 審 美 趣 味 和 理 想 裝 飾
宋 代 耀 州 青 瓷 的 紋 飾 風 格 與 意 義 曾 肅 良 英 國 萊 斯 特 大 學 博 物 館 學 博 士 國 立 台 灣 師 範 大 學 美 術 研 究 所 助 理 教 授 摘 要 中 國 的 飲 茶 之 風, 興 於 唐 而 盛 於 宋, 特 別 是 宋 代 宮 廷 禁 苑 和 地 方 官 吏 文 人 學 士 的 尚 茶 崇 茶, 以 品 茶 為 雅 尚 的 觀 念 與 作 法, 使
(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit
Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How
chp6.ppt
Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行
《大话设计模式》第一章
第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜
PowerPoint 演示文稿
按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值
untitled
JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE
## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / 0 1 2 0 / $ # ( *. 3. 3 *..# 4 #$ 3 ( 5 ) ### 4 $ # 5, $ ## # 4 $# 5 ( %
# # $ %& $ %# ( $ # ( # $ ( $ $ ( ( % ( $ ( $ ( ( % ( % $ ( $ ( ( $ ( ( ( & ( ( ( $ ( ( % %# ( ( $ ( %# % ## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / 0 1 2 0 / $ # ( *.
untitled
1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 [email protected] www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立
JavaIO.PDF
O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException
目 录 1 国 务 院 中 央 军 委 关 于 建 立 和 完 善 军 民 结 合 寓 军 于 民 武 器 装 备 科 研 生 产 体 系 的 若 干 意 见 2 国 务 院 关 于 鼓 励 和 引 导 民 间 投 资 健 康 发 展 的 若 干 意 见 >>....... 11 3 国 防 科 工
军 民 融 合 相 关 政 策 法 规 汇 编 广 东 省 国 防 科 学 技 术 工 业 办 公 室 2015 年 5 月 25 日 目 录 1 国 务 院 中 央 军 委 关 于 建 立 和 完 善 军 民 结 合 寓 军 于 民 武 器 装 备 科 研 生 产 体 系 的 若 干 意 见 2 国 务 院 关 于 鼓 励 和 引 导 民 间 投 资 健 康 发 展 的 若 干 意 见 >>.......
function initcatalog(){ /* 重新認識 JavaScript 松崗出版社 ISBN: /6 */ var Chap1=new 觀念篇 (); /* 摘要 事情要由重新認識 JavaScript 開始談起!JavaScript 和瀏 覽
function initcatalog(){ /* 重新認識 JavaScript 松崗出版社 ISBN:978-986-204-229-8 2008/6 */ var Chap1=new 觀念篇 (); /* 摘要 事情要由重新認識 JavaScript 開始談起!JavaScript 和瀏 覽器 DOM 之間糾纏已久的關聯, 讓許多人在學習過程中, 產生混淆與不明確性 本章, 以不同角度, 細說從頭,
幻灯片 1
动 态 网 页 脚 本 语 言 JavaScript 主 要 内 容 一. 概 述 二. 编 程 基 础 三. 面 向 对 象 的 基 本 概 念 四. 内 置 对 象 五. 浏 览 器 窗 口 对 象 1 JavaScript 概 述 JavaScript 是 由 Netscape 公 司 开 发 的 一 种 跨 平 台, 面 向 对 象 (object-oriented) 的 网 页 脚 本 语
(\244j\257d\276\307\274\351_201508021-C.indd_70%.pdf)
1847-1852 1872 20 1 1896 8000 20 1896 1950 1 1896 1896 13 1900 1900 3 20 2 4 1910 1950 3 1911 1 2 3 4 1927 4 20 300 6 1906 1930 7 1911 5 1919 8 1914 9 1920 10 11 1902 200 6 12 1930 7 " # #! $! 14 15! "!
Microsoft Word - ch04三校.doc
4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear
2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF
Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific
JAVA String常用APi
JAVA String 常 用API 2015 年 5 月13 日 星 期 三 ------------------------------------------ String 类 的 特 点 : 字 符 串 对 象 一 旦 被 初 始 化 就 不 会 被 改 变 abc 存 储 在 字 符 串 常 量 池 中 Java 的 核 心 类 包 是 java.lang eclipse:ctrl+ 方
新版 明解C言語入門編
328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66
詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入
100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入
BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2
PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native
untitled
1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1
Microsoft Word - PHP7Ch01.docx
PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:
<4D6963726F736F667420576F7264202D20A4D5A46CA1D0A740A4E5A5FEB6B02E646F63>
我 讀 孔 子 ( 第 六 屆 ) 征 文 比 賽 獲 獎 作 文 選 集 澳 門 人 文 科 學 學 會 主 辦 澳 門 基 金 會 教 育 暨 青 年 局 贊 助 2008 11 1 一 等 獎 ( 以 下 以 下 按 照 學 校 筆 劃 順 序 排 列 ) 將 心 比 心, 推 己 及 人 王 錦 江 ( 培 正 中 學 ) 己 所 不 欲, 勿 施 於 人 聖 人 孔 子 這 句 只 有 八
E3. 最 大 公 因 數 問 題 描 述 : 寫 一 程 式 求 兩 數 之 最 大 公 因 數 利 用 TextField 元 件 輸 入 正 整 數 M, N (1 N M 9999), 按 下 compute 按 鈕 後 計 算 正 整 數 M, N 的 最 大 公 因 數, 並 顯 示 於
資 管 系 程 式 設 計 (2) 會 考 題 庫 易 E1. 陣 列 相 加 問 題 描 述 : 請 使 用 TextField 元 件 讓 使 用 者 輸 入 二 個 2x2 的 陣 列 內 容, 當 按 下 +/-/* 按 鈕 後, 接 收 兩 個 陣 列 並 進 行 加 / 減 / 乘 法 運 算, 再 將 其 結 果 顯 示 在 = 後 面 的 TextField 元 件 上 E2. 數
.' 6! "! 6 "'' 6 7% $! 7%/'& 人 类 非 洲 锥 虫 病 又 称 昏 睡 病 是 布 氏 锥 虫 冈 比 亚 亚 种!! 或 布 氏 锥 虫 罗 得 西 亚 种 "#$$ %! &'!!! 感 染 引 起 的 一 种 寄 生 虫 病 以 采 采 蝇! 为 传 播 ' 媒
) 文 章 编 号 '.')) 论 著!"#$%&' ' ' ' ' '!"# ' $%& ' ' '8 目 的 对 ' 例 输 入 性 非 洲 锥 虫 病 患 者 进 行 实 验 室 诊 断 与 病 原 体 鉴 定 方 法 收 集 患 者 的 临 床 发 病 与 流 行 病 学 调 查 资 料 采 集 血 样 脑 脊 液 瑞 氏 吉 氏 染 色 涂 片 后 镜 检 用 布 氏 锥 虫 表 达 位
(2) 廠 商 具 有 維 修 維 護 或 售 後 服 務 能 力 之 證 明 ;(3) 廠 商 具 有 製 造 供 應 或 承 做 能 力 之 證 明 ;(4) 具 有 相 當 人 力 之 證 明 屬 特 定 資 格 之 ㄧ 8.(3) 機 關 辦 理 預 算 金 額 為 新 台 幣 四 億 元
政 府 採 購 法 規 概 要 題 庫 最 後 更 新 日 期 :( 人 發 局 第 一 期 ) 2010/03/20 選 擇 題 : ( 答 案 ) 正 確 錯 誤 解 析 1.(3) 機 關 訂 定 招 標 文 件, 何 者 正 確?(1) 廠 商 履 行 契 約 所 必 須 具 備 之 財 務 商 業 或 技 術 資 格 條 件, 不 考 慮 廠 商 在 外 國 之 商 業 活 動 應 (2)
Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2
Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790
Chapter 9: Objects and Classes
Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum
CHAPTER VC#
1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )
口 的 70% 连 南 县 的 瑶 族. 有 排 瑶 过 山 瑶 排 瑶 6 万 多 人 住 在 三 排 南 岗 i 雨 水 大 麦 山 大 坪 香 坪 盘 石 金 坑 8 个 乡 镇. 形 成 了 占 全 县 面 积 80% 的 聚 居 地 << 连 州 志 } 卷 八 排 瑶 志 曰 在 连 者
居 住 地 域 与 文 化 变 迁 一 一 以 广 东 瑶 族 为 例 赵 家 旺 * 中 国 是 个 多 民 族 国 家. 共 有 56 个 民 族. 其 中 少 数 民 族 有 归 个 根 据 1990 年 的 人 口 普 查. 全 国 总 人 口 11 亿 3 千 多 万 人. 汉 族 10 忆 4 千 多 万 人. 占 全 国 总 人 口 的 90% 多. 少 数 民 族 人 口 不 到 10%
EJB-Programming-4-cn.doc
EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session
新・解きながら学ぶC言語
330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180
( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)
( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.
./ 0123 455
./ 0123 455 ./ 0/.1 0/2 0 3 0/2 3///41.///.3/ 56 1// 0 1 0/ 2/.///./ ./ 0/ 1/ 223.//. 4 5 6/3 7/3. 4 8 591././ 7 21 :1 01 5 5// :/3 " .. / 0. /.1. / 21. / 3 4.56. 788.947 80.8 81 ./ 0/ 1/ 234 5/4 6 5 0/4.24
四川省普通高等学校
四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9
國家圖書館典藏電子全文
EAI EAI Middleware EAI 3.1 EAI EAI Client/Server Internet,www,Jav a 3.1 EAI Message Brokers -Data Transformation Business Rule XML XML 37 3.1 XML XML XML EAI XML 1. XML XML Java Script VB Script Active
JAVASCRIPT学习笔记
JAVASCRIPT 学 习 笔 记 mnstory.net 此 文 档 为 学 习 JAVASCRIPT 语 法 记 录 的 比 较, 学 习 教 材 为 阮 一 峰 开 源 的 JavaScript 标 准 参 考 教 程 一 书 语 法 部 分 http://javascript.ruanyifeng.com/ 语 句 一 条 语 句 以 换 行 或 分 号 结 束, 和 SHELL 语 法
