第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的 操 作 来 变 换 网 页 的 内 容, 以 实 现 HTML 语 言 所 不 能 实 现 的 效 果 1.1 历 史 版 本 与 兼 容 性 当 JavaScript 在 Navigator 浏 览 器 中 成 功 应 用 后 不 久,Microsoft 公 司 也 推 出 了 用 于 IE 浏 览 器 的 类 似 JavaScript 的 程 序 语 言, 并 将 其 命 名 为 Jscript, 本 节 将 介 绍 二 者 之 间 的 关 系 1.1.1 JavaScript 与 ECMAScript 1999 年, 欧 洲 计 算 机 制 造 协 会 (ECMA) 在 JavaScript 1.5 版 本 基 础 上 指 定 了 ECMAScript 程 序 语 言 规 范 书 (ECMA-262 标 准 ), 该 标 准 被 国 际 标 准 化 组 织 (ISO) 采 纳, 作 为 各 浏 览 器 使 用 的 脚 本 程 序 的 统 一 标 准 在 ECMAScript 标 准 公 布 后,NetScape 和 Microsoft 公 司 都 许 诺, 此 后 开 发 的 新 功 能 将 遵 循 该 标 准, 但 JavaScript 和 JScript 两 个 名 称 仍 被 两 大 公 司 分 别 使 用 JavaScript 和 JScript 的 绝 大 部 分 功 能 是 相 同 的, 但 也 有 小 部 分 内 容 完 全 不 同 本 书 主 要 介 绍 基 于 ECMAScript 标 准 的 JavaScript 语 言, 即 JavaScript 和 JScript 的 公 共 部 分, 因 此, 使 用 JavaScript 同 时 代 表 这 两 种 语 言 同 时, 为 了 保 持 内 容 和 知 识 的 完 整 性, 在 一 些 章 节 中 也 会 出 现 两 种 脚 本 不 兼 容 的 内 容, 但 会 加 以 说 明 与 一 些 编 译 性 语 言 不 同,JavaScript 是 一 种 解 释 性 的 语 言, 其 源 代 码 不 经 过 编 译, 而 直 接 在 运 行 时 被 翻 译, 因 而, 被 称 为 脚 本 式 语 言 由 于 JavaScript 的 这 一 特 点, 在 编 写 JavaScript 程 序 时, 很 难 预 计 运 行 程 序 所 使 用 的 硬 件 环 境 操 作 系 统 以 及 浏 览 器 等, 因 此, 在 进 行 程 序 开 发 时, 不 应 该 仅 使 用 其 最 高 版 本 的 特 性 和 功 能, 还 必 须 考 虑 到 低 版 本 浏 览 器
1.1.2 不 同 浏 览 器 对 JavaScript 的 支 持 由 于 绝 大 多 数 JavaScript 代 码 的 解 释 执 行 是 在 浏 览 器 中 进 行 的, 因 此 了 解 不 同 浏 览 器 对 JavaScript 的 支 持 十 分 必 要 表 1-1 表 1-2 和 表 1-3 列 出 了 不 同 浏 览 器 对 JavaScript 的 支 持 情 况 表 1-1 JScript 与 IE 对 ECMA 的 支 持 语 言 版 本 浏 览 器 版 本 遵 循 标 准 JScript 1.0 Internet Explorer 3.0 ECMA-262 版 本 1 JScript 3.0 Internet Explorer 4.0 ECMA-262 版 本 1 JScript 5.0 Internet Explorer 5.0 ECMA-262 版 本 1 JScript 5.5 Internet Explorer 5.5 ECMA-262 版 本 3 JScript 5.6 Internet Explorer 6.0 ECMA-262 版 本 3 表 1-2 JavaScript 与 NetScape 对 ECMA 的 支 持 语 言 版 本 浏 览 器 版 本 遵 循 标 准 JavaScript 1.0 Netscape 2 ECMA-262 版 本 1 JavaScript 1.2 Netscape 4.0~4.05 ECMA-262 版 本 1 JavaScript 1.3 Netscape 4.06~4.7 ECMA-262 版 本 1 JavaScript 1.4 无 ( 仅 服 务 端 ) ECMA-262 版 本 1 JavaScript 1.5 Netscape 6.x 与 7.x ECMA-262 版 本 3 JavaScript 2.0( 建 议 ) ECMA-262 版 本 4( 制 定 中 ) 表 1-3 JavaScript 与 JScript 版 本 对 照 语 言 版 本 浏 览 器 版 本 语 言 版 本 浏 览 器 版 本 JavaScript 1.0 Netscape 2 JScript 1.0 Internet Explorer 3.0 JavaScript 1.3 Netscape 4.06 JScript 3.0 Internet Explorer 4.0 JavaScript 1.5 Netscape 6+ 基 于 Mozilla 的 浏 览 器 JScript 5.5 Internet Explorer 5.5+ 鉴 于 目 前 网 络 应 用 的 现 状, 在 本 书 中, 以 ECMA-262 版 本 3 为 基 础, 结 合 JavaScript 1.5 和 JScript 5.5 来 进 行 讲 解, 同 时, 对 JavaScript 2.0 的 部 分 功 能 进 行 简 单 介 绍 1.1.3 本 书 对 读 者 知 识 结 构 的 要 求 由 于 JavaScript 是 嵌 入 在 网 页 中 的 脚 本 语 言, 所 以 了 解 必 要 的 网 页 设 计 语 言 和 规 范 是 必 须 的 本 书 限 于 篇 幅, 不 可 能 对 网 页 设 计 的 方 方 面 面 进 行 介 绍, 下 面 的 知 识, 需 要 读 者 在 使 用 本 书 前 应 有 所 了 解 对 HTML 语 言 有 较 深 的 理 解, 最 好 有 这 方 面 的 开 发 经 验 如 果 对 HTML 了 解 甚 少, 建 议 在 阅 读 本 书 前 先 学 习 一 下 HTML 的 相 关 知 识 对 CSS 知 识 应 有 初 步 了 解 本 书 第 13 章 介 绍 了 样 式 表 的 应 用, 如 果 没 有 CSS 知 识, 理 解 起 来 可 能 会 比 较 吃 力 DHTML 相 关 知 识, 本 书 的 部 分 内 容 会 涉 及 到 DHTML 如 果 有 HTML 的 基 础,DHTML 学 起 来 会 很 容 易 第 1 章 JavaScript 简 介 4
XML 相 关 基 础 知 识 在 JavaScript 数 据 处 理 中, 会 遇 到 与 XML 结 合 使 用 的 情 况, 对 XML 只 需 了 解 大 概 即 可 1.2 JavaScript 在 HTML 中 的 使 用 在 HTML 中,JavaScript 语 言 可 以 在 如 下 3 个 地 方 使 用, 本 节 将 依 次 介 绍 在 网 页 文 件 的 <script> 标 签 对 中 直 接 编 写 将 程 序 代 码 放 置 在 一 个 单 独 的 文 件 中, 在 网 页 文 件 中 的 适 当 位 置 引 用 这 个 文 件 将 程 序 代 码 作 为 某 个 元 素 的 事 件 属 性 值, 或 超 链 接 的 href 属 性 值 1.2.1 在 <script> 中 的 使 用 <script> 可 以 出 现 在 HTML 文 件 中 的 <head></head> 之 间, 也 可 以 出 现 在 <body></body> 中 的 任 何 位 置 在 一 个 HTML 文 档 中, 可 以 使 用 多 个 <script> 标 签 对, 嵌 入 多 段 JavaScript 代 码, 并 且 各 段 JavaScript 代 码 之 间 可 以 相 互 访 问, 如 同 将 所 有 代 码 放 在 一 对 <script> 标 签 之 中 的 效 果 例 如, 在 代 码 1.1 中, 一 共 定 义 了 3 段 代 码 代 码 1.1 多 段 代 码 相 互 调 用 :1.1.htm <html> <head><title> 多 段 代 码 分 开 放 置 </title></head> <body> <h1> 多 段 代 码 分 开 放 置 </h1><p> 这 里 是 第 一 段 代 码 :<br> <script language="javascript"> var x=1; // 定 义 一 个 变 量 x, 并 赋 值 为 1 document.write("<p> 这 段 代 码 将 只 输 出 这 句 话 <p>"); // 输 出 一 句 话,<p> 是 空 行 符 号 这 里 是 第 二 段 代 码 :<br> <script language="javascript"> // 输 出 前 段 代 码 中 x 的 结 果 其 中 "x=" 将 输 出 x=, // 其 后 的 x 输 出 x 的 值, 加 号 (+) 将 结 果 连 接 起 来 document.write("x="+x+"<p>"); 这 里 是 第 三 段 代 码 :<br> <script language="javascript"> var y=2; // 定 义 一 个 变 量 y, 并 赋 值 为 2 document.write("y="+y); // 输 出 y 的 值 </body> </html> 代 码 运 行 的 结 果 如 图 1.1 所 示 在 代 码 中, 第 二 段 代 码 中 的 document.write( ) 调 用 了 第 一 段 代 码 中 定 义 的 变 量 x, 显 示 正 常 这 同 第 三 段 代 码 中 调 用 y 的 效 果 是 一 样 的 5 1.2 JavaScript 在 HTML 中 的 使 用
图 1.1 运 行 结 果 1.2.2 代 码 屏 蔽 有 些 浏 览 器 不 能 很 好 地 支 持 JavaScript, 在 这 些 浏 览 器 中, 需 要 将 JavaScript 代 码 屏 蔽, 否 则, 浏 览 器 会 把 JavaScript 代 码 与 Web 页 面 的 其 他 内 容 一 起 显 示 在 屏 幕 上, 可 以 将 <script> 标 签 对 中 的 内 容 用 HTML 的 注 释 标 记 ( 和 ) 括 起 来, 如 下 所 示 <script language="javascript"> alert(new Date()); // 被 屏 蔽 的 JavaScript 语 句 这 样, 支 持 <script> 的 浏 览 器 将 忽 略 嵌 入 在 <script> 标 签 对 中 的 HTML 注 释 符, 会 继 续 执 行 注 释 符 之 间 的 脚 本 程 序 当 用 户 浏 览 器 不 支 持 JavaScript 或 禁 用 JavaScript 时, 如 果 还 想 在 页 面 中 显 示 一 些 内 容, 可 以 使 用 <noscript></noscript> 标 签 对, 这 样, 在 支 持 JavaScript 的 浏 览 器 中, 会 显 示 <script> 中 的 内 容, 在 不 支 持 JavaScript 的 浏 览 器 中, 会 显 示 <noscript></noscript> 中 的 内 容, 而 不 会 将 二 者 同 时 显 示 出 来 例 如, 对 于 代 码 1.2 中 的 程 序 代 码 1.2 <script> 与 <noscript>:1.2.htm <html> <head><title>script 与 noscript</title></head> <body> <h1><script> 与 <noscript></h1><p> <script language="javascript"> var a; a=" 这 是 使 用 <script> 定 义 的 内 容 <p>"; document.write(a); <noscript> 这 是 使 用 <noscript> 定 义 的 内 容 </noscript> </body> 第 1 章 JavaScript 简 介 6
</html> 在 支 持 JavaScript 的 浏 览 器 中 运 行 这 段 代 码, 会 显 示 图 1.2 所 示 的 结 果 ; 在 不 支 持 JavaScript 的 浏 览 器 中 运 行 这 段 代 码, 会 显 示 图 1.3 所 示 的 结 果 图 1.2 显 示 结 果 (1) 图 1.3 显 示 结 果 (2) 1.2.3 在 单 独 文 件 中 使 用 可 以 将 脚 本 代 码 放 置 在 一 个 单 独 的 文 件 中, 该 文 件 以 js 为 扩 展 名, 称 为 JavaScript 脚 本 文 件 假 设 已 有 一 个 名 为 script.js 的 脚 本 文 件, 在 同 目 录 下 的 HTML 文 件 中 可 以 用 下 面 的 方 式 调 用 该 脚 本 文 件 : <script src="script.js" language="javascript"> 在 HTML 文 件 中 引 用 JavaScript 脚 本 文 件, 与 将 该 脚 本 文 件 直 接 插 入 到 一 对 <script> 标 签 对 中 的 效 果 相 同 如 果 一 些 脚 本 内 容 要 在 多 个 网 页 中 被 引 用, 将 这 些 脚 本 内 容 放 置 在 一 个 脚 本 文 件 中, 然 后 由 各 个 网 页 来 引 入 这 个 脚 本 文 件, 将 非 常 便 于 实 现 网 站 的 模 块 化 设 计 当 要 修 改 所 有 文 件 中 的 脚 本 内 容 时, 只 需 在 脚 本 文 件 中 修 改 一 次 即 可 例 如, 有 一 个 名 为 1.3.js 的 文 件, 内 容 如 下 document.writeln('<h1> 这 是 使 用 外 部 JS 文 件 生 成 的 行!</h1>'); 使 用 下 面 的 代 码 1.3 对 其 进 行 调 用 代 码 1.3 <script> 与 <noscript>:1.3.htm <html> <head><title>javascript 脚 本 文 件 </title> <script type="text/javascript" src="1.3.js"> </head> <body> <script language = "JavaScript"> document.write("<body bgcolor='black' text='yellow'>"); document.write(" 这 是 嵌 入 HTML 中 的 代 码 生 成 的 行 "); </body> </html> 上 面 代 码 的 运 行 结 果 如 图 1.4 所 示 7 1.2 JavaScript 在 HTML 中 的 使 用
图 1.4 运 行 结 果 1.2.4 作 为 属 性 值 使 用 HTML 中 的 超 链 接 标 签 <a> 的 href 属 性 值 除 了 可 以 使 用 http 和 mailto 等 协 议 外, 还 可 以 使 用 JavaScript, 使 用 方 式 如 下 例 所 示 <a href = "javascript:alert(new Date();)">JavaScript</a> JavaScript 扩 展 了 标 准 的 HTML, 为 HTML 标 签 增 加 了 各 种 事 件 属 性 例 如, 对 于 button 表 单 元 素, 可 以 设 置 一 个 新 的 属 性 onclick,onclick 属 性 值 就 是 一 段 JavaScript 代 码, 单 击 该 按 钮 后,onclick 属 性 值 中 的 JavaScript 代 码 就 会 被 浏 览 器 解 释 执 行 如 下 所 示 <input type = button value = test onclick = "alert(new Date());"> 注 意 用 作 URL 的 JavaScript 代 码 前 要 增 加 javascript:, 以 说 明 使 用 的 是 JavaScript 协 议, 而 事 件 属 性 中 的 JavaScript 代 码 前 不 需 要 增 加 javascript: 进 行 说 明 1.3 JavaScript 基 本 语 法 1.3.1 执 行 顺 序 JavaScript 程 序 按 照 在 HTML 文 件 中 出 现 的 顺 序 逐 行 执 行 如 果 需 要 在 整 个 HTML 文 件 中 执 行 ( 如 函 数 全 局 变 量 等 ), 最 好 将 其 放 在 HTML 文 件 的 <head> </head> 中 某 些 代 码, 比 如 函 数 体 内 的 代 码, 不 会 被 立 即 执 行, 只 有 当 所 在 的 函 数 被 其 他 程 序 调 用 时, 该 代 码 才 会 被 执 行 1.3.2 大 小 写 敏 感 JavaScript 是 对 字 母 大 小 写 敏 感 ( 严 格 区 分 大 小 写 ) 的, 也 就 是 说, 在 输 入 语 言 的 关 键 字 函 数 名 变 量 以 及 其 他 标 识 符 时, 都 必 须 采 取 一 致 的 大 小 写 形 式 例 如, 关 键 字 while 就 必 须 书 写 为 while, 而 不 能 写 为 While 或 WHILE 同 样 的, computerworld Computerworld computerworld ComputerWorld 是 4 个 不 同 的 变 量 名, 在 使 用 时 需 务 必 注 意 注 意 HTML 并 不 区 分 大 小 写 由 于 JavaScript 和 HTML 紧 密 相 连, 这 一 点 很 容 易 混 淆 许 多 JavaScript 对 象 和 属 性 都 与 其 代 表 的 HTML 标 签 或 属 性 同 名, 在 HTML 中, 这 些 名 称 可 以 以 任 意 的 大 小 写 方 式 输 入 而 不 会 引 起 混 乱, 但 在 JavaScript 中, 这 些 名 称 通 常 都 是 小 写 的 例 如,HTML 中 的 事 件 处 理 器 属 性 ONCLICK 通 常 被 声 明 为 onclick 或 OnClick, 而 在 JavaScript 中 只 能 使 用 onclick 第 1 章 JavaScript 简 介 8
1.3.3 空 白 符 与 换 行 符 JavaScript 会 忽 略 关 键 字 变 量 名 数 字 函 数 名 或 其 他 各 种 元 素 实 体 之 间 的 空 格 制 表 符 或 换 行 符, 除 非 这 些 空 格 是 字 符 串 常 量 的 一 部 分 由 于 可 以 在 各 元 素 实 体 之 间 随 意 使 用 空 格 制 表 符 或 换 行 符, 所 以 就 可 以 使 用 整 齐 一 致 的 方 式 自 由 安 排 程 序 布 局, 在 其 中 使 用 缩 进 格 式, 使 代 码 容 易 阅 读 和 理 解 1.3.4 语 句 与 分 隔 符 分 号 (;) 标 识 着 一 个 语 句 的 结 束 例 如, 可 以 将 多 个 语 句 写 在 同 一 行 内, 而 用 分 号 (;) 对 其 进 行 分 隔, 如 下 x = x + 1; y = y + 1; z = 0; 也 可 以 在 一 行 内 连 续 输 入 多 个 分 号 或 者 空 格, 如 下 x = x + 1; ;; if (x >> 10) { x = 0; }; y = y - 1; 这 些 都 不 会 改 变 程 序 的 运 行 结 果 从 上 面 包 含 多 个 分 号 的 语 句 行 可 以 看 出, 一 个 单 独 的 分 号 (;) 也 可 以 构 成 一 个 语 句, 这 样 的 语 句 称 为 空 语 句 为 了 程 序 的 整 齐 美 观, 可 以 采 用 对 齐 或 缩 进 的 方 式 同 时, 习 惯 上 每 行 只 写 一 个 单 独 的 语 句, 此 时, 语 句 后 面 的 分 隔 符 (;) 可 以 省 略, 不 会 影 响 程 序 的 意 义 但 是, 如 果 一 行 中 有 多 个 语 句, 则 分 隔 符 是 必 需 的, 而 最 后 一 条 语 句 后 面 的 分 号 (;) 可 以 省 略 例 如, 下 面 的 两 行 语 句 是 等 效 的 x = x + 1; y = y 1 x = x + 1; y = y 1; 之 所 以 可 以 省 略 行 末 的 分 号, 是 因 为 JavaScript 会 自 动 插 入 例 如 下 面 的 写 法 return x 会 被 JavaScript 处 理 为 return; x; 这 一 点 需 要 特 别 注 意 因 为 这 种 代 码 不 会 引 起 语 法 错 误, 但 会 产 生 一 种 不 明 确 的 状 态, 出 现 非 预 期 的 结 果 同 样, 下 面 的 代 码 也 会 产 生 问 题 break outerloop JavaScript 会 在 break 后 插 入 一 个 分 号 (;), 当 要 解 释 下 一 行 代 码 时, 就 会 引 起 语 法 错 误 其 他 运 算 符 如 ++ -- 等 也 要 和 其 作 用 的 表 达 式 处 在 同 一 行 中 提 示 语 句 末 的 分 号 虽 然 不 是 必 须 的, 但 养 成 好 的 习 惯 有 助 于 减 少 程 序 的 出 错 几 率 另 外, 要 注 意 区 分 英 文 分 号 ; 和 中 文 分 号 ;, 其 他 如 引 号 逗 号 等, 也 要 注 意 英 文 和 中 文 的 区 别 1.3.5 块 大 括 号 {} 通 常 用 来 括 起 一 行 或 多 行 语 句, 括 在 其 中 的 各 语 句 间 通 常 有 较 紧 密 的 联 系 这 种 用 {} 括 起 来 的 多 条 语 句 被 称 为 块 (block) 例 如, 在 函 数 定 义 中, 大 括 号 {} 用 来 标 明 函 数 体 的 开 始 和 结 束 界 限 9 1.3 JavaScript 基 本 语 法
function add(x, y) { var result = x + y; return result; } 在 有 多 条 语 句 的 循 环 体 中, 大 括 号 {} 也 用 来 标 明 循 环 的 开 始 和 结 束 if (x >> 10) { x = 0; y = 10; } 1.3.6 注 释 为 程 序 添 加 注 释 可 以 起 到 以 下 两 种 作 用 可 以 解 释 程 序 某 些 语 句 的 作 用 和 功 能, 使 程 序 更 易 于 理 解 可 以 用 注 释 来 暂 时 屏 蔽 某 些 语 句, 使 浏 览 器 对 其 暂 时 忽 略, 等 到 需 要 时 再 取 消 注 释, 这 些 语 句 就 会 发 挥 作 用 JavaScript 提 供 了 两 种 注 释 符 号 : // 和 /* */ 其 中 // 用 于 单 行 注 释 ; /* */ 用 于 多 行 注 释 多 行 注 释 符 号 分 为 开 始 和 结 束 两 部 分, 即 在 需 要 注 释 的 内 容 前 输 入 /*, 同 时 在 注 释 内 容 结 束 后 输 入 */ 表 示 注 释 结 束 下 面 是 单 行 注 释 和 多 行 注 释 的 示 例 // 这 是 单 行 注 释 的 例 子 /* 这 是 多 行 注 释 的 例 子 这 里 是 多 行 注 释 的 第 二 行 */ /* 这 是 多 行 注 释 在 一 行 中 应 用 的 例 子 */ 注 意 多 行 注 释 /* */ 中 可 以 嵌 套 单 行 注 释 //, 但 不 可 以 嵌 套 多 行 注 释 /* */ 因 为 第 一 个 /* 会 与 其 后 第 一 个 */ 匹 配, 从 而 使 后 面 的 注 释 不 再 起 作 用, 甚 至 引 起 程 序 出 错 除 上 述 两 种 注 释 符 外,JavaScript 还 能 识 别 HTML 注 释 的 开 始 部 分,JavaScript 将 其 作 为 单 行 注 释 看 待, 就 像 使 用 // 一 样 但 JavaScript 不 能 识 别 HTML 注 释 的 结 束 部 分 --> 存 在 这 种 现 象, 有 其 深 层 的 原 因 : 在 JavaScript 中, 如 果 第 一 行 以 开 始, 最 后 一 行 以 结 束, 那 么 其 间 的 程 序 就 包 含 在 一 个 整 个 的 HTML 注 释 中, 会 被 不 支 持 JavaScript 的 浏 览 器 忽 略 掉, 不 会 被 显 示 由 于 第 一 行 以 开 始, 最 后 一 行 以 // 结 束,JavaScript 会 将 两 行 都 忽 略 掉, 而 不 会 忽 略 中 间 的 其 他 行 用 这 种 方 式 可 以 对 那 些 无 法 理 解 JavaScript 的 浏 览 器 隐 藏 其 代 码, 而 对 那 些 可 以 理 解 JavaScript 的 浏 览 器 则 不 隐 藏 注 意 由 于 的 特 殊 作 用, 在 使 用 时 就 应 该 只 将 其 放 在 脚 本 的 第 一 行, 用 在 其 他 位 置 很 可 能 会 带 来 混 乱 1.4 JavaScript 保 留 字 与 其 他 编 程 语 言 一 样,JavaScript 中 也 有 许 多 保 留 字, 不 能 被 用 作 标 识 符 ( 函 数 名 变 量 名 等 ) 表 1-4 列 出 了 这 些 保 留 字 第 1 章 JavaScript 简 介 10
表 1-4 JavaScript 1.5 的 保 留 字 abstract else instanceof switch boolean enum int synchronized break export interface this byte extends long throw case false native throws catch final new transient char finally null true class float package try const for private typeof continue function protected val debugger goto public var default if return void delete implements short volatile do import static while double in super with 表 中 所 列 的 部 分 保 留 字 并 未 出 现 在 JavaScript 中, 但 出 现 在 ECMAScript 规 范 中, 随 着 JavaScript 的 升 级, 会 逐 渐 被 列 为 关 键 字, 所 以 也 应 该 避 免 使 用 除 以 上 保 留 字 外, 还 有 一 些 关 键 字 出 现 在 了 ECMA4.0 Javascript 2.0 中, 为 了 让 自 己 的 程 序 代 码 被 更 多 的 浏 览 器 所 识 别, 建 议 将 表 1-5 中 的 词 语 也 作 为 保 留 字 处 理 表 1-5 JavaScript 潜 在 保 留 字 As event Is uint Assert get Namespace ulong Decimal include Require use Ensure internal Sbyte ushort Exclude invariant Set 还 有 一 类 词 汇, 包 括 JavaScript 内 置 对 象 函 数 数 据 类 型 等 名 称, 如 String parseint document 等, 这 类 词 汇 很 多 ( 可 以 参 考 相 关 资 料 ), 无 法 一 一 列 出 设 法 避 开 这 些 词 汇, 可 有 效 防 止 程 序 出 错 提 示 JavaScript 未 来 的 版 本 一 定 会 增 加 很 多 面 向 对 象 的 技 术, 增 加 很 多 与 HTML XML CSS 等 的 交 互 技 术, 因 此, 为 使 自 己 的 代 码 程 序 能 有 更 久 的 生 命 力, 在 编 写 代 码 时, 应 设 法 避 免 使 用 head frame body 等 词 汇 1.5 错 误 与 调 试 程 序 出 错 是 在 所 难 免 的,JavaScript 程 序 错 误 一 般 有 语 法 错 误 和 逻 辑 错 误 两 种 1.5.1 语 法 错 误 语 法 错 误 是 使 用 JavaScript 语 句 规 则 不 当 造 成 的 例 如, 错 误 地 使 用 了 关 键 字, 错 误 地 11 1.5 错 误 与 调 试
定 义 了 变 量 名 称 等 此 时, 浏 览 器 运 行 JavaScript 代 码 就 会 报 错 使 用 调 试 软 件 可 以 显 示 错 误 发 生 的 位 置 常 用 的 调 试 软 件, 如 果 使 用 Microsoft 公 司 的 Internet Explorer 浏 览 器, 可 以 安 装 Microsoft Script Debugger 软 件 进 行 调 试, 如 果 使 用 NetScape Navigator 浏 览 器, 可 打 开 其 JavaScript 控 制 台 工 具 进 行 调 试 程 序 出 错 后, 调 试 工 具 一 般 会 报 告 出 错 文 件 出 错 行 号 出 错 类 型 等 信 息, 可 以 根 据 提 示 进 行 代 码 修 改 1.5.2 逻 辑 错 误 有 些 时 候, 程 序 中 不 存 在 语 法 错 误, 也 没 有 执 行 非 法 操 作 的 语 句, 但 程 序 运 行 结 果 却 不 正 确, 这 种 错 误 称 为 逻 辑 错 误 例 如, 弄 错 了 两 个 变 量 的 位 置, 或 者 使 用 了 错 误 的 运 算 符 等 对 于 逻 辑 错 误 的 调 试, 最 简 单 的 方 法 是 使 用 Alert 语 句 将 运 行 过 程 的 中 间 结 果 显 示 出 来, 就 会 比 较 容 易 判 断 错 误 产 生 的 位 置 第 1 章 JavaScript 简 介 12