这是我参与「第四届青训营」笔记创作活动的第4天
今天我们来学习一下前端三件套的最后一件JavaScript
一、了解JavaScript
JavaScript(缩写:JS)是一门完备的 动态编程语言。当应用于 HTML 文档时,可为网站提供动态交互特性。由布兰登·艾克(Brendan Eich,Mozilla 项目、Mozilla 基金会和 Mozilla 公司的联合创始人)发明。
JavaScript 的应用场合极其广泛,简单到幻灯片、照片库、浮动布局和响应按钮点击,复杂到游戏、2D/3D 动画、大型数据库驱动程序等等。
JavaScript 相当简洁,却非常灵活。开发者们基于 JavaScript 核心编写了大量实用工具,可以使 开发工作事半功倍。其中包括:
- 浏览器应用程序接口(API)—— 浏览器内置的 API 提供了丰富的功能,比如:动态创建 HTML 和设置 CSS 样式、从用户的摄像头采集处理视频流、生成 3D 图像与音频样本等等。
- 第三方 API —— 让开发者可以在自己的站点中整合其它内容提供者(Twitter、Facebook 等)提供的功能。
- 第三方框架和库 —— 用来快速构建网站和应用。
二、JavaScript快速入门
变量(Variable)
变量 (en-US) 是存储值的容器。要声明一个变量,先输入关键字 let 或 var,然后输入合适的名称:
let myVariable;
注意:行末由分号结束,变量名对大小写敏感,以及var和let的区别
定义变量后进行赋值:
myVariable = '李雷';
赋值后可以进行更改:
let myVariable = '李雷';
myVariable = '韩梅梅';
注意变量可以有不同的 数据类型
注释
使用/* 和*/进行注释 ,如果是单行的话可以使用双斜杠//
/*
这里的所有内容
都是注释。
*/
// 这是一条注释。
运算符
运算符 (en-US) 是一类数学符号,可以根据两个值(或变量)产生结果。
| 运算符 | 解释 | 符号 | 示例 |
|---|---|---|---|
| 加 | 将两个数字相加,或拼接两个字符串。 | + | 6 + 9; "Hello " + "world!"; |
| 减、乘、除 | 这些运算符操作与基础算术一致。只是乘法写作星号,除法写作斜杠。 | -, *, / | 9 - 3; 8 * 2; //乘法在JS中是一个星号 9 / 3; |
| 赋值运算符 | 为变量赋值(你之前已经见过这个符号了) | = | let myVariable = '李雷'; |
| 等于 | 测试两个值是否相等,并返回一个 true/false (布尔)值。 | === | let myVariable = 3; myVariable === 4; // false |
| 不等于 | 和等于运算符相反,测试两个值是否不相等,并返回一个 true/false (布尔)值。 | !== | let myVariable = 3; myVariable !== 3; // false |
| 取非 | 返回逻辑相反的值,比如当前值为真,则返回 false。 | ! | 原式为真,但经取非后值为 false: let myVariable = 3; !(myVariable === 3); // false |
条件语句
条件语句是一种代码结构,用来测试表达式的真假,并根据测试结果运行不同的代码。一个常用的条件语句是 if ... else。这里的返回值函数,使用的是alert() ,该函数在浏览器窗口内弹出一个警告框,还应为其提供一个字符串参数,以告诉它警告框里要显示的内容
let iceCream = 'chocolate';
if (iceCream === 'chocolate') {
alert('我最喜欢巧克力冰激淋了。');
} else {
alert('但是巧克力才是我的最爱呀……');
}
函数 Function
函数 用来封装可复用的功能。如果没有函数,一段特定的操作过程用几次就要重复写几次,而使用函数则只需写下函数名和一些简短的信息。
比如之前的document.querySelector 和 alert 就是浏览器内置的函数,随时可用。
定义自己的函数:只需使用关键字functon即可,返回值用return表示
function multiply(num1, num2) {
let result = num1 * num2;
return result;
}
事件
事件能为网页添加真实的交互能力。它可以捕捉浏览器操作并运行一些代码做为响应。最简单的事件是 点击事件,鼠标的点击操作会触发该事件。
可尝试将下面的代码输入到控制台,然后点击页面的任意位置:
document.querySelector('html').onclick = function() {
alert('别戳我,我怕疼。');
}
将事件与元素绑定有许多方法。在这里选用了 <html> 元素,把一个匿名函数(就是没有命名的函数,这里的匿名函数包含单击鼠标时要运行的代码)赋值给了 html 的 onclick (en-US) 属性。
匿名函数
匿名函数没有名字,这里把匿名函数赋值给了onclick
document.querySelector('html').onclick = function() {};
或者等价写法
let myHTML = document.querySelector('html');
myHTML.onclick = function() {};
还有另一种箭头的写法:使用 () => 代替 function ()
document.querySelector('html').addEventListener('click', () => {
alert('别戳我,我怕疼。');
});
三、JavaScript的作用
API
JavaScript 语言核心之上所构建的功能更令人兴奋。应用程序接口(Application Programming Interfaces(API))将为你的代码提供额外的超能力。
API 是已经建立好的一套代码组件,可以让开发者实现原本很难甚至无法实现的程序。就像现成的家具套件之于家居建设,用一些已经切好的木板组装一个书柜,显然比自己设计,寻找合适的木材,裁切至合适的尺寸和形状,找到正确尺寸的螺钉,再组装成书柜要简单得多。
浏览器 API 内建于 web 浏览器中,它们可以将数据从周边计算机环境中筛选出来,还可以做实用的复杂工作。例如:
文档对象模型 API(DOM(Document Object Model)API)能通过创建、移除和修改 HTML,为页面动态应用新样式等手段来操作 HTML 和 CSS。比如当某个页面出现了一个弹窗,或者显示了一些新内容(像上文小 demo 中看到那样),这就是 DOM 在运行。地理位置 API(Geolocation API)获取地理信息。这就是为什么 谷歌地图 可以找到你的位置,而且标示在地图上。画布(Canvas)和WebGLAPI 可以创建生动的 2D 和 3D 图像。人们正运用这些 web 技术制作令人惊叹的作品。参见 Chrome Experiments 以及 webglsamples。- 诸如
HTMLMediaElement和WebRTC等 影音类 API 让你可以利用多媒体做一些非常有趣的事,比如在网页中直接播放音乐和影片,或用自己的网络摄像头获取录像,然后在其他人的电脑上展示
第三方 API 并没有默认嵌入浏览器中,一般要从网上取得它们的代码和信息。
运行次序
当浏览器执行到一段 JavaScript 代码时,通常会按从上往下的顺序执行这段代码。这意味着你需要注意代码书写的顺序
作为程序员,你或许听说过这两个术语:解释( interpret) 和 编译 (compile) 。在解释型语言中,代码自上而下运行,且实时返回运行结果。代码在由浏览器执行前,不需要将其转化为其他形式。代码将直接以文本格式(text form)被接收和处理。
相对的,编译型语言需要先将代码转化(编译)成另一种形式才能运行。比如 C/C++ 先被编译成汇编语言,然后才能由计算机运行。程序将以二进制的格式运行,这些二进制内容是由程序源代码产生的。JavaScript 是轻量级解释型语言。浏览器接受到 JavaScript 代码,并以代码自身的文本格式运行它。技术上,几乎所有 JavaScript 转换器都运用了一种叫做即时编译(just-in-time compiling)的技术;当 JavaScript 源代码被执行时,它会被编译成二进制的格式,使代码运行速度更快。
四、使用JavaScript
内部 JavaScript
可以像添加 CSS 那样将 JavaScript 添加到 HTML 页面中。CSS 使用 <link> 元素链接外部样式表,使用 <style> 元素向 HTML 嵌入内部样式表,JavaScript 这里只需一个元素——<script>。
在 </head> 标签结束前插入以下代码:
<script>
// 在此编写 JavaScript 代码
</script>
外部 JavaScript
创建一个main.js文件,将 <script> 元素替换为:
<script src="script.js" async></script>