一.JavaScript简介
1.什么是JavaScript
JavaScript 最初被创建的目的是“使网页更生动”。
这种编程语言写出来的程序被称为 脚本。它们可以被直接写在网页的 HTML 中,在页面加载的时候自动执行。脚本被以纯文本的形式提供和执行。它们不需要特殊的准备或编译即可运行。
随着 JavaScript 的发展,它已经成为了一门完全独立的语言,并且也拥有了自己的语言规范 ECMAScript。现在,它和 Java 之间没有任何关系。
如今,JavaScript 不仅可以在浏览器中执行,也可以在服务端执行,甚至可以在任意搭载了 JavaScript 引擎 的设备中执行。浏览器中嵌入了 JavaScript 引擎,有时也称作“JavaScript 虚拟机”。
引擎是如何工作的?
引擎很复杂,但是基本原理很简单。
- 引擎(如果是浏览器,则引擎被嵌入在其中)读取(“解析”)脚本。
- 然后,引擎将脚本转化(“编译”)为机器语言。
- 然后,机器代码快速地执行。
引擎会对流程中的每个阶段都进行优化。它甚至可以在编译的脚本运行时监视它,分析流经该脚本的数据,并根据获得的信息进一步优化机器代码。
- JavaScript 最开始是专门为浏览器设计的一门语言,但是现在也被用于很多其他的环境。
- JavaScript 作为被应用最广泛的浏览器语言,且与 HTML/CSS 完全集成,具有独特的地位。
- 有很多其他的语言可以被“编译”成 JavaScript,这些语言还提供了更多的功能。建议最好了解一下这些语言,至少在掌握了 JavaScript 之后大致的了解一下。
二.Javascript基础知识
1.关于<script>标签
如果设置了 src
特性,script
标签内容将会被忽略。
一个单独的 <script>
标签不能同时有 src
特性和内部包裹的代码。
这将不会工作:
<script src="file.js">
alert(1); // 此内容会被忽略,因为设定了 src
</script>
我们必须进行选择,要么使用外部的 <script src="…">
,要么使用正常包裹代码的 <script>
。
为了让上面的例子工作,我们可以将它分成两个 <script>
标签。
<script src="file.js"></script>
<script>
alert(1);
</script>
请注意:
一般来说,只有最简单的脚本才嵌入到 HTML 中。更复杂的脚本存放在单独的文件中。
使用独立文件的好处是浏览器会下载它,然后将它保存到浏览器的 缓存 中。
之后,其他页面想要相同的脚本就会从缓存中获取,而不是下载它。所以文件实际上只会下载一次。
这可以节省流量,并使得页面(加载)更快。
- 我们可以使用一个
<script>
标签将 JavaScript 代码添加到页面中。 type
和language
特性(attribute)不是必需的。- 外部的脚本可以通过
<script src="path/to/script.js"></script>
的方式插入。
2.代码结构
(1)语句
alert('Hello, world!')
这样可以用来显示消息的语句。
(2)分号
当存在换行符(line break)时,在大多数情况下可以省略分号。
下面的代码也是可以运行的:
alert('Hello')
alert('World')
在这,JavaScript 将换行符理解成“隐式”的分号。这也被称为 自动分号插入。
在大多数情况下,换行意味着一个分号。但是“大多数情况”并不意味着“总是”!
比如:
alert(3 +
1
+ 2);
但存在 JavaScript 无法确定是否真的需要自动插入分号的情况。
例如:
alert("Hello");
[1, 2].forEach(alert);
我们先记住这段代码的运行结果:先显示 Hello
,然后显示 1
,然后 2
。
现在,让我们删除 alert
语句后的分号:
alert("Hello")
[1, 2].forEach(alert);
与上面的代码相比只有一个字符的区别:第一行末尾的分号不见了。
如果我们运行这段代码,只有第一个 Hello
会被显示出来(并且有一个报错,你可能需要打开控制台才能看到它)。并且不会再有数字被显示出来。
这是因为,JavaScript 引擎并没有假设在方括号 [...]
前有一个分号。因此,最后一个示例中的代码被视为了单个语句。
对于引擎来说,它是这样的:
alert("Hello")[1, 2].forEach(alert);
我们需要在 alert
后面加一个分号,代码才能正常运行。
(3)注释
单行注释以两个正斜杠字符 //
开始。
多行注释以一个正斜杠和星号开始 “/*”
并以一个星号和正斜杠结束 “*/”
。
使用快捷键
在大多数的编辑器中,一行代码可以使用 Ctrl+/ 快捷键进行单行注释,诸如 Ctrl+Shift+/ 的快捷键可以进行多行注释(选择代码,然后按下快捷键)。对于 Mac 电脑,应使用 Cmd 而不是 Ctrl,使用 Option 而不是 Shift
不支持注释嵌套
不要在
/*...*/
内嵌套另一个/*...*/
。下面这段代码报错而无法执行:
/* /* 嵌套注释 ?!? */ */ alert( 'World' );
3.现代模式,"use strict"
当它处于脚本文件的顶部时,则整个脚本文件都将以“现代”模式进行工作。
比如:
"use strict";
// 代码以现代模式工作
...
请确保 "use strict"
出现在脚本的最顶部,否则严格模式可能无法启用。且只有注释可以出现在 "use strict"
的上面。没有类似于 "no use strict"
这样的指令可以使程序返回默认模式。
一旦进入了严格模式,就没有回头路了。
浏览器控制台
当你使用 开发者控制台 运行代码时,请注意它默认是不启动 use strict
的。
在控制台中启用 use strict,
你可以尝试搭配使用 Shift+Enter 按键去输入多行代码,然后将 use strict
放在代码最顶部
'use strict'; <Shift+Enter 换行>
// ...你的代码
<按下 Enter 以运行>
目前我们欢迎将 "use strict";
写在脚本的顶部。稍后,当你的代码全都写在了 class 和 module 中时,你则可以将 "use strict";
这行代码省略掉。