你应该已经知道的内容
本指南假定你具备以下基础知识
在哪里可以找到 JavaScript 信息
MDN 上的 JavaScript 文档包括以下内容
- 使用 JavaScript 进行动态脚本编程 为初学者提供结构化的 JavaScript 指南,并介绍编程和互联网的基本概念。
- JavaScript 指南(本指南)提供 JavaScript 语言及其对象的概述。
- JavaScript 参考 提供 JavaScript 的详细参考资料。
什么是 JavaScript?
JavaScript 是一种跨平台、面向对象的脚本语言,用于使网页具有交互性(例如,复杂的动画、可点击的按钮、弹出菜单等)。还有更高级的服务器端 JavaScript 版本,例如 Node.js,它允许你为网站添加比下载文件更多的功能(例如多个计算机之间的实时协作)。在宿主环境(例如,Web 浏览器)中,JavaScript 可以连接到其环境的对象,以提供对它们的程序化控制。
JavaScript 包含一个标准的对象库,例如 Array
、Map
和 Math
,以及一组核心语言元素,例如运算符、控制结构和语句。核心 JavaScript 可以通过补充额外的对象来扩展,以用于各种目的;例如
- 客户端 JavaScript 通过提供控制浏览器及其文档对象模型(DOM)的对象来扩展核心语言。例如,客户端扩展允许应用程序将元素放置在 HTML 表单上,并响应用户事件,例如鼠标点击、表单输入和页面导航。
- 服务器端 JavaScript 通过提供与在服务器上运行 JavaScript 相关的对象来扩展核心语言。例如,服务器端扩展允许应用程序与数据库通信,提供从应用程序的一个调用到另一个调用的信息连续性,或在服务器上执行文件操作。
这意味着在浏览器中,JavaScript 可以改变网页(DOM)的外观。同样,服务器上的 Node.js JavaScript 可以响应浏览器中执行的代码发送的自定义请求。
JavaScript 和 Java
JavaScript 和 Java 在某些方面相似,但在另一些方面则根本不同。JavaScript 语言类似于 Java,但没有 Java 的静态类型和强类型检查。JavaScript 遵循大多数 Java 表达式语法、命名约定和基本控制流结构,这就是它从 LiveScript 更名为 JavaScript 的原因。
与 Java 的声明构建的编译时类系统不同,JavaScript 支持一个基于少数代表数字、布尔和字符串值的数据类型的运行时系统。JavaScript 具有基于原型的对象模型,而不是更常见的基于类的对象模型。基于原型的模型提供动态继承;也就是说,继承的内容可以因单个对象而异。JavaScript 还支持不需要任何特殊声明要求的函数。函数可以是对象的属性,作为松散类型的方法执行。
与 Java 相比,JavaScript 是一种非常自由的语言。你无需声明所有变量、类和方法。你无需担心方法是公共的、私有的还是受保护的,也无需实现接口。变量、参数和函数返回类型没有明确的类型。
Java 是一种基于类的编程语言,旨在实现快速执行和类型安全。类型安全意味着,例如,你不能将 Java 整数转换为对象引用,也不能通过破坏 Java 字节码来访问私有内存。Java 的基于类的模型意味着程序完全由类及其方法组成。Java 的类继承和强类型通常需要紧密耦合的对象层次结构。这些要求使 Java 编程比 JavaScript 编程更复杂。
相比之下,JavaScript 的精神源自一系列较小、动态类型的语言,例如 HyperTalk 和 dBase。这些脚本语言因其更简单的语法、专门的内置功能和对对象创建的最低要求,为更广泛的受众提供了编程工具。
JavaScript | Java |
---|---|
面向对象。对象类型之间没有区别。继承通过原型机制实现,属性和方法可以动态添加到任何对象。 | 基于类。对象分为类和实例,所有继承都通过类层次结构进行。类和实例不能动态添加属性或方法。 |
变量数据类型不声明(动态类型,松散类型)。 | 变量数据类型必须声明(静态类型,强类型)。 |
不能自动写入硬盘。 | 可以自动写入硬盘。 |
JavaScript 和 ECMAScript 规范
JavaScript 由 Ecma International(欧洲信息和通信系统标准化协会,ECMA 曾是欧洲计算机制造商协会的缩写)标准化,旨在提供基于 JavaScript 的标准化国际编程语言。这个标准化版本的 JavaScript 称为 ECMAScript,在所有支持该标准的应用程序中行为相同。公司可以使用开放标准语言来开发其 JavaScript 实现。ECMAScript 标准记录在 ECMA-262 规范中。
ECMA-262 标准也获得 ISO(国际标准化组织)批准,作为 ISO-16262。你也可以在 Ecma International 网站上找到该规范。ECMAScript 规范不描述文档对象模型(DOM),DOM 由 万维网联盟 (W3C) 和/或 WHATWG (Web 超文本应用技术工作组) 标准化。DOM 定义了 HTML 文档对象向你的脚本公开的方式。要更好地了解使用 JavaScript 编程时使用的不同技术,请参阅文章 JavaScript 技术概述。
JavaScript 文档与 ECMAScript 规范
ECMAScript 规范是一组实现 ECMAScript 的要求。如果你想在 ECMAScript 实现或引擎中(例如 Firefox 中的 SpiderMonkey 或 Chrome 中的 V8)实现符合标准的语言特性,它会很有用。
ECMAScript 文档不旨在帮助脚本程序员。编写脚本时请使用 JavaScript 文档获取信息。
ECMAScript 规范使用 JavaScript 程序员可能不熟悉的术语和语法。尽管语言的描述在 ECMAScript 中可能有所不同,但语言本身保持不变。JavaScript 支持 ECMAScript 规范中概述的所有功能。
JavaScript 文档描述了适合 JavaScript 程序员的语言方面。
JavaScript 入门
要开始使用 JavaScript,你只需要一个现代的 Web 浏览器。最新版本的 Firefox、Chrome、Microsoft Edge 和 Safari 都支持本指南中讨论的功能。
一个非常有用的 JavaScript 探索工具是 JavaScript 控制台(有时称为 Web 控制台,或简称控制台):这是一个允许你输入 JavaScript 并在当前页面中运行它的工具。
这里的屏幕截图显示了 Firefox Web 控制台,但所有现代浏览器都附带了一个以类似方式工作的控制台。
打开控制台
打开控制台的确切说明因浏览器而异
输入并运行 JavaScript
控制台显示在浏览器窗口的底部。控制台底部有一个输入行,你可以用来输入 JavaScript,输出显示在上面的面板中
控制台的工作方式与 eval
完全相同:返回最后输入的表达式。为简单起见,可以想象每次在控制台中输入内容时,它实际上都被 console.log
包裹在 eval
周围,就像这样
console.log(eval("3 + 5"));
控制台中的多行输入
默认情况下,如果你在输入一行代码后按 Enter(或 Return,取决于你的键盘),则你键入的字符串将被执行。要输入多行输入
- 如果你键入的字符串不完整(例如,你键入
function foo() {
),则控制台会将 Enter 视为换行符,并允许你键入另一行。 - 如果你在按 Enter 的同时按住 Shift,则控制台会将其视为换行符,并允许你键入另一行。
- 仅在 Firefox 中,你可以激活多行输入模式,你可以在迷你编辑器中输入多行,然后在准备好时运行整个代码。
要开始编写 JavaScript,请打开控制台,复制以下代码,并将其粘贴到提示符处
(function () {
"use strict";
/* Start of your code */
function greetMe(yourName) {
alert(`Hello ${yourName}`);
}
greetMe("World");
/* End of your code */
})();
按 Enter 即可在浏览器中查看其展开!
接下来是什么
在接下来的页面中,本指南将向你介绍 JavaScript 语法和语言功能,以便你能够编写更复杂的应用程序。
但现在,请记住始终在代码前包含 (function(){"use strict";
,并在代码末尾添加 })();
。严格模式和 IIFE 文章解释了它们的作用,但现在可以认为它们的作用如下
- 防止 JavaScript 中让初学者感到困惑的语义。
- 防止在控制台中执行的代码片段相互交互(例如,在一次控制台执行中创建的内容被用于另一次控制台执行)。