Microsoft Word - 第3章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第3章.doc"

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

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

新・解きながら学ぶJava

新・解きながら学ぶ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 --

More information

untitled

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

More information

Microsoft Word - 第3章.doc

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

More information

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

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

More information

CC213

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] : ,

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费

13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费 助 理 电 子 商 务 考 试 真 题 试 题 第 一 部 分 : 理 论 部 分 一 单 项 选 择 题 1 ( B ) 是 信 息 系 统 的 核 心 组 成 部 分 A 逻 辑 模 型 B 数 据 库 C 概 念 模 型 D 以 上 全 部 2 ping www.163.com -t 中 参 数 t 的 作 用 是 :( A ) A 进 行 连 续 测 试 B 在 新 窗 口 中 显 示 C

More information

新版 明解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,

More information

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 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()

More information

3.1 num = 3 ch = 'C' 2

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:

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

得 到 了 補 償. 對 於 武 姜 而 言, 莊 公 與 自 己 的 關 係 並 不 親 密, 而 共 叔 段 又 是 自 己 向 來 疼 愛 有 加 的 兒 子, 所 以, 對 莊 公 提 出 再 怎 麼 無 理 的 要 求, 武 姜 也 不 會 覺 得 有 什 麼 不 妥 之 處, 而 對 共

得 到 了 補 償. 對 於 武 姜 而 言, 莊 公 與 自 己 的 關 係 並 不 親 密, 而 共 叔 段 又 是 自 己 向 來 疼 愛 有 加 的 兒 子, 所 以, 對 莊 公 提 出 再 怎 麼 無 理 的 要 求, 武 姜 也 不 會 覺 得 有 什 麼 不 妥 之 處, 而 對 共 左 傳 - 鄭 伯 克 段 於 鄢 人 物 心 理 1021141 林 詩 倩 一. 緒 論 鄭 伯 克 段 於 鄢, 及 共 叔 段 之 亂, 是 魯 隱 公 元 年, 即 公 元 前 722 年, 春 秋 初 年 在 鄭 國 國 內 發 生 的 一 場 內 亂. 武 姜 成 為 武 公 夫 人 並 先 後 為 武 公 生 下 了 兩 個 兒 子, 長 子 莊 公 由 於 腳 先 出 來 造 成

More information

一 耀 州 青 瓷 的 裝 飾 手 法 與 紋 飾 種 類 耀 州 窯 的 裝 飾 紋 樣, 豐 富 多 變, 而 且 題 材 內 容 廣 泛, 組 合 形 式 多 樣, 圖 案 形 象 優 美, 令 人 賞 心 悅 目, 並 且 反 映 了 當 時 社 會 的 審 美 趣 味 和 理 想 裝 飾

一 耀 州 青 瓷 的 裝 飾 手 法 與 紋 飾 種 類 耀 州 窯 的 裝 飾 紋 樣, 豐 富 多 變, 而 且 題 材 內 容 廣 泛, 組 合 形 式 多 樣, 圖 案 形 象 優 美, 令 人 賞 心 悅 目, 並 且 反 映 了 當 時 社 會 的 審 美 趣 味 和 理 想 裝 飾 宋 代 耀 州 青 瓷 的 紋 飾 風 格 與 意 義 曾 肅 良 英 國 萊 斯 特 大 學 博 物 館 學 博 士 國 立 台 灣 師 範 大 學 美 術 研 究 所 助 理 教 授 摘 要 中 國 的 飲 茶 之 風, 興 於 唐 而 盛 於 宋, 特 別 是 宋 代 宮 廷 禁 苑 和 地 方 官 吏 文 人 學 士 的 尚 茶 崇 茶, 以 品 茶 為 雅 尚 的 觀 念 與 作 法, 使

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(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

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值

More information

untitled

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

More information

## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / 0 1 2 0 / $ # ( *. 3. 3 *..# 4 #$ 3 ( 5 ) ### 4 $ # 5, $ ## # 4 $# 5 ( %

## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / 0 1 2 0 / $ # ( *. 3. 3 *..# 4 #$ 3 ( 5 ) ### 4 $ # 5, $ ## # 4 $# 5 ( % # # $ %& $ %# ( $ # ( # $ ( $ $ ( ( % ( $ ( $ ( ( % ( % $ ( $ ( ( $ ( ( ( & ( ( ( $ ( ( % %# ( ( $ ( %# % ## $%& %& ## () #) (( * (+++ () #) #) (+ (+ #) #) ( #, - #)). #))- # ( / / / 0 1 2 0 / $ # ( *.

More information

untitled

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 立

More information

JavaIO.PDF

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

More information

目 录 1 国 务 院 中 央 军 委 关 于 建 立 和 完 善 军 民 结 合 寓 军 于 民 武 器 装 备 科 研 生 产 体 系 的 若 干 意 见 2 国 务 院 关 于 鼓 励 和 引 导 民 间 投 资 健 康 发 展 的 若 干 意 见 >>....... 11 3 国 防 科 工

目 录 1 国 务 院 中 央 军 委 关 于 建 立 和 完 善 军 民 结 合 寓 军 于 民 武 器 装 备 科 研 生 产 体 系 的 若 干 意 见 2 国 务 院 关 于 鼓 励 和 引 导 民 间 投 资 健 康 发 展 的 若 干 意 见 >>....... 11 3 国 防 科 工 军 民 融 合 相 关 政 策 法 规 汇 编 广 东 省 国 防 科 学 技 术 工 业 办 公 室 2015 年 5 月 25 日 目 录 1 国 务 院 中 央 军 委 关 于 建 立 和 完 善 军 民 结 合 寓 军 于 民 武 器 装 备 科 研 生 产 体 系 的 若 干 意 见 2 国 务 院 关 于 鼓 励 和 引 导 民 间 投 资 健 康 发 展 的 若 干 意 见 >>.......

More information

function initcatalog(){ /* 重新認識 JavaScript 松崗出版社 ISBN: /6 */ var Chap1=new 觀念篇 (); /* 摘要 事情要由重新認識 JavaScript 開始談起!JavaScript 和瀏 覽

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 之間糾纏已久的關聯, 讓許多人在學習過程中, 產生混淆與不明確性 本章, 以不同角度, 細說從頭,

More information

幻灯片 1

幻灯片 1 动 态 网 页 脚 本 语 言 JavaScript 主 要 内 容 一. 概 述 二. 编 程 基 础 三. 面 向 对 象 的 基 本 概 念 四. 内 置 对 象 五. 浏 览 器 窗 口 对 象 1 JavaScript 概 述 JavaScript 是 由 Netscape 公 司 开 发 的 一 种 跨 平 台, 面 向 对 象 (object-oriented) 的 网 页 脚 本 语

More information

(\244j\257d\276\307\274\351_201508021-C.indd_70%.pdf)

(\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! "!

More information

Microsoft Word - ch04三校.doc

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

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

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

More information

JAVA String常用APi

JAVA String常用APi JAVA String 常 用API 2015 年 5 月13 日 星 期 三 ------------------------------------------ String 类 的 特 点 : 字 符 串 对 象 一 旦 被 初 始 化 就 不 会 被 改 变 abc 存 储 在 字 符 串 常 量 池 中 Java 的 核 心 类 包 是 java.lang eclipse:ctrl+ 方

More information

新版 明解C言語入門編

新版 明解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

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

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

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

Microsoft Word - PHP7Ch01.docx

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:

More information

<4D6963726F736F667420576F7264202D20A4D5A46CA1D0A740A4E5A5FEB6B02E646F63>

<4D6963726F736F667420576F7264202D20A4D5A46CA1D0A740A4E5A5FEB6B02E646F63> 我 讀 孔 子 ( 第 六 屆 ) 征 文 比 賽 獲 獎 作 文 選 集 澳 門 人 文 科 學 學 會 主 辦 澳 門 基 金 會 教 育 暨 青 年 局 贊 助 2008 11 1 一 等 獎 ( 以 下 以 下 按 照 學 校 筆 劃 順 序 排 列 ) 將 心 比 心, 推 己 及 人 王 錦 江 ( 培 正 中 學 ) 己 所 不 欲, 勿 施 於 人 聖 人 孔 子 這 句 只 有 八

More information

E3. 最 大 公 因 數 問 題 描 述 : 寫 一 程 式 求 兩 數 之 最 大 公 因 數 利 用 TextField 元 件 輸 入 正 整 數 M, N (1 N M 9999), 按 下 compute 按 鈕 後 計 算 正 整 數 M, N 的 最 大 公 因 數, 並 顯 示 於

E3. 最 大 公 因 數 問 題 描 述 : 寫 一 程 式 求 兩 數 之 最 大 公 因 數 利 用 TextField 元 件 輸 入 正 整 數 M, N (1 N M 9999), 按 下 compute 按 鈕 後 計 算 正 整 數 M, N 的 最 大 公 因 數, 並 顯 示 於 資 管 系 程 式 設 計 (2) 會 考 題 庫 易 E1. 陣 列 相 加 問 題 描 述 : 請 使 用 TextField 元 件 讓 使 用 者 輸 入 二 個 2x2 的 陣 列 內 容, 當 按 下 +/-/* 按 鈕 後, 接 收 兩 個 陣 列 並 進 行 加 / 減 / 乘 法 運 算, 再 將 其 結 果 顯 示 在 = 後 面 的 TextField 元 件 上 E2. 數

More information

.' 6! "! 6 "'' 6 7% $! 7%/'& 人 类 非 洲 锥 虫 病 又 称 昏 睡 病 是 布 氏 锥 虫 冈 比 亚 亚 种!! 或 布 氏 锥 虫 罗 得 西 亚 种 "#$$ %! &'!!! 感 染 引 起 的 一 种 寄 生 虫 病 以 采 采 蝇! 为 传 播 ' 媒

.' 6! ! 6 '' 6 7% $! 7%/'& 人 类 非 洲 锥 虫 病 又 称 昏 睡 病 是 布 氏 锥 虫 冈 比 亚 亚 种!! 或 布 氏 锥 虫 罗 得 西 亚 种 #$$ %! &'!!! 感 染 引 起 的 一 种 寄 生 虫 病 以 采 采 蝇! 为 传 播 ' 媒 ) 文 章 编 号 '.')) 论 著!"#$%&' ' ' ' ' '!"# ' $%& ' ' '8 目 的 对 ' 例 输 入 性 非 洲 锥 虫 病 患 者 进 行 实 验 室 诊 断 与 病 原 体 鉴 定 方 法 收 集 患 者 的 临 床 发 病 与 流 行 病 学 调 查 资 料 采 集 血 样 脑 脊 液 瑞 氏 吉 氏 染 色 涂 片 后 镜 检 用 布 氏 锥 虫 表 达 位

More information

(2) 廠 商 具 有 維 修 維 護 或 售 後 服 務 能 力 之 證 明 ;(3) 廠 商 具 有 製 造 供 應 或 承 做 能 力 之 證 明 ;(4) 具 有 相 當 人 力 之 證 明 屬 特 定 資 格 之 ㄧ 8.(3) 機 關 辦 理 預 算 金 額 為 新 台 幣 四 億 元

(2) 廠 商 具 有 維 修 維 護 或 售 後 服 務 能 力 之 證 明 ;(3) 廠 商 具 有 製 造 供 應 或 承 做 能 力 之 證 明 ;(4) 具 有 相 當 人 力 之 證 明 屬 特 定 資 格 之 ㄧ 8.(3) 機 關 辦 理 預 算 金 額 為 新 台 幣 四 億 元 政 府 採 購 法 規 概 要 題 庫 最 後 更 新 日 期 :( 人 發 局 第 一 期 ) 2010/03/20 選 擇 題 : ( 答 案 ) 正 確 錯 誤 解 析 1.(3) 機 關 訂 定 招 標 文 件, 何 者 正 確?(1) 廠 商 履 行 契 約 所 必 須 具 備 之 財 務 商 業 或 技 術 資 格 條 件, 不 考 慮 廠 商 在 外 國 之 商 業 活 動 應 (2)

More information

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

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

More information

Chapter 9: Objects and Classes

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

More information

CHAPTER VC#

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( )

More information

口 的 70% 连 南 县 的 瑶 族. 有 排 瑶 过 山 瑶 排 瑶 6 万 多 人 住 在 三 排 南 岗 i 雨 水 大 麦 山 大 坪 香 坪 盘 石 金 坑 8 个 乡 镇. 形 成 了 占 全 县 面 积 80% 的 聚 居 地 << 连 州 志 } 卷 八 排 瑶 志 曰 在 连 者

口 的 70% 连 南 县 的 瑶 族. 有 排 瑶 过 山 瑶 排 瑶 6 万 多 人 住 在 三 排 南 岗 i 雨 水 大 麦 山 大 坪 香 坪 盘 石 金 坑 8 个 乡 镇. 形 成 了 占 全 县 面 积 80% 的 聚 居 地 << 连 州 志 } 卷 八 排 瑶 志 曰 在 连 者 居 住 地 域 与 文 化 变 迁 一 一 以 广 东 瑶 族 为 例 赵 家 旺 * 中 国 是 个 多 民 族 国 家. 共 有 56 个 民 族. 其 中 少 数 民 族 有 归 个 根 据 1990 年 的 人 口 普 查. 全 国 总 人 口 11 亿 3 千 多 万 人. 汉 族 10 忆 4 千 多 万 人. 占 全 国 总 人 口 的 90% 多. 少 数 民 族 人 口 不 到 10%

More information

EJB-Programming-4-cn.doc

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

More information

新・解きながら学ぶC言語

新・解きながら学ぶ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

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( 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.

More information

./ 0123 455

./ 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

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

國家圖書館典藏電子全文

國家圖書館典藏電子全文 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

More information

JAVASCRIPT学习笔记

JAVASCRIPT学习笔记 JAVASCRIPT 学 习 笔 记 mnstory.net 此 文 档 为 学 习 JAVASCRIPT 语 法 记 录 的 比 较, 学 习 教 材 为 阮 一 峰 开 源 的 JavaScript 标 准 参 考 教 程 一 书 语 法 部 分 http://javascript.ruanyifeng.com/ 语 句 一 条 语 句 以 换 行 或 分 号 结 束, 和 SHELL 语 法

More information