一、JavaScript介绍
1、JavaScript是前端语言
JavaScript是前端语言,而不是后台语言。
JavaScript运行在用户的终端网页上,而不是服务器上,所以我们称之为“**前端语言**”。就是服务于页面的交互效果、美化,不能操作数据库。
**后台语言**是运行在服务器上的,比如PHP、ASP、JSP等等,这些语言都能够操作数据库,都能够对数据库进行“增删改查”操作。
备注:Node.js是用 JavaScript 开发的,现在也可以基于 Node.js 技术进行服务器端编程。
2、JavaScript的组成
JavaScript基础分为三个部分:
- **ECMAScript**:JavaScript 的**语法标准**。包括变量、表达式、运算符、函数、if语句、for语句等。
- **DOM**:Document Object Model(文档对象模型),操作**页面上的元素**的API。比如让盒子移动、变色、改变大小、轮播图等等。
- **BOM**:Browser Object Model(浏览器对象模型),操作**浏览器部分功能**的API。通过BOM可以操作浏览器窗口,比如弹框、控制浏览器跳转、获取浏览器分辨率等等。
3、JavaScript 的特点
特点1:解释型语言
JavaScript 是解释型语言,不需要事先被翻译为机器码;而是边翻译边执行(翻译一行,执行一行)。
什么是「解释型语言」?详见下一段。
> 由于少了实现编译这一步骤,所以解释型语言开发起来尤为方便,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了JIT技术,使得运行速度得以改善。
特点2:单线程
特点3:ECMAScript标准
ECMAScript是一种由 ECMA 国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)制定和发布的脚本语言规范。
JavaScript是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以欧洲的这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。
简单来说,**ECMAScript不是一门语言,而是一个标准**。ECMAScript 规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
ECMAScript在2015年6月,发布了ECMAScript 6版本(ES6),语言的能力更强(也包含了很多新特性)。但是,浏览器的厂商不会那么快去追上这个标准,需要时间。
通俗理解就是:ECMAScript 是 JS 的语法;DOM 和 BOM 浏览器运行环境为 JS提供的API。
JS的版本
由ECMA的第39号技术专家委员会(Technical Committee 39,简称TC39)负责制订ECMAScript标准,成员包括Microsoft、Mozilla、Google等公司。
ECMAScript 就是JS的语言标准。
JS的版本发布记录:
- 1997年,ECMA 发布 ECMA-262 标准,推出浏览器标准语言 ECMAScript 1.0。
- 2009年,发布 ECMAScript 5.0。
- 2011年,发布 ECMAScript5.1,成为ISO国际标准,从而推动所有浏览器都支持。
- 2015年,发布 ECMAScript 6(简称 ES6),更名为ECMAScript 2015。
注意,**前者是按版本号区分,后者是按年份区分**。
- 2016年,发布 ECMAScript 7,即 ECMAScript 2016。
- 2017年,发布ECMAScript 8,即 ECMAScript 2017。
- 2018年,发布 ECMAScript 9,即 ECMAScript 2018。
- 2019年,发布 ECMAScript 10,即 ECMAScript 2019。
- 2020年,发布 ECMAScript 11,即 ECMAScript 2020。
二、编程语言的分类
1、翻译器
计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所编写的语言翻译成机器语言,计算机才能执行程序。**程序语言翻译成机器语言的工具,被称为翻译器**。
由此可见,所谓的“翻译”,指的是翻译成计算机能够执行的指令。
翻译器翻译的方式有两种:一种是**编译**,另一种是**解释**。两种方式之间的区别在于**翻译的时机**不同。
- **编译器**:在代码执行之前,事前把所有的代码一次性翻译好,生成中间代码文件,然后整体执行。
- **解释器**:边翻译,边执行(在代码执行时进行及时翻译,并立即执行)。当编译器以解释的方式运行时,也称之为解释器。
对应的语言,称之为“编译型语言”、“解释型语言”。
2、编译型语言
- 定义:事先把所有的代码一次性翻译好,然后整体执行。
- 优点:运行更快。
- 不足:移植性不好,不跨平台。
- 编译型语言举例:c、c++
比如说,c语言的代码文件是`.c`后缀,翻译之后文件是`.obj`后缀,系统执行的是 obj 文件;再比如, java 语言的代码文件是`.java`后缀,翻译之后的文件是`.class`后缀。(注意,Java 语言不是严格的 编译型语言,这个一会儿会讲)
3、解释型语言
- 定义:**边翻译边执行**(翻译一行,执行一行),不需要事先一次性翻译。
- 优点:移植性好,跨平台。
- 缺点:运行更慢。
- 解释型语言举例:JavaScript、php、Python。
注:
Java语言
Java 语言既不是编译型语言,也不是解释型语言。翻译过程:
(1)编译:`.java`代码文件先通过 javac 命令编译成`.class`文件。
(2)执行:`.class`文件再通过 jvm 虚拟机,解释执行。有了 jvm 的存在,让 java 跨平台了。
三、JavaScript引入
1、行内式
<input type="button" value="点我点我" onclick="alert(‘千古壹号‘)" />
可以将单行或少量 JS 代码写在HTML标签的事件属性中(以 on 开头的属性),比如放在上面的 `onclick`点击事件中。
- 这种书写方式,不推荐使用,原因是:可读性差,尤其是需要编写大量 JS代码时,容易出错;引号多层嵌套时,也容易出错。
- 关于代码中的「引号」,在HTML标签中,我们推荐使用双引号, JS 中我们推荐使用单引号。
2、内嵌式
在 `<body>` 标签里放入`<script type=”text/javascript”></script>`标签,并在`<script>`里书写JavaScript 代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 在这里写 js 代码 alert(‘千古壹号的方式2‘); console.log(‘qianguyihao 方式2‘); </script> </body> </html>
- text表示纯文本,因为JavaScript也是一个纯文本的语言。
- 可以将多行JS代码写到 `<script>` 标签中。
- 内嵌式 JS 是学习时常用的方式。
3、引入外部的 JS 文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <!-- 引入外部的 js 文件 --> <script src="tool.js"></script> </body> </html>
上面这段代码,依然是放到body标签里,可以和内嵌的js代码并列。
注:引用外部 JS文件的 script 标签中间不可以再写代码。
四、JavaScript语法
1、JavaScript对换行、缩进、空格不敏感。每一条语句以分号结尾。
注:每一条语句末尾要加上分号,虽然分号不是必须加的,如果不写分号,浏览器会自动添加,但是会消耗一些系统资源。
2、所有的符号,都是英语的。比如括号、引号、分号。
如果你用的是搜狗拼音,**建议不要用shift切换中英文**(可以在搜狗软件里进行设置),不然很容易输入中文的分号;建议用ctrl+space切换中英文输入法。
3、严格区分大小写。
我们不要把 HTML、CSS、JavaScript三者的注释格式搞混淆了。
HTML 的注释
<!-- 我是注释 -->
CSS的注释
/* */
JavaScript的注释
// 单行注释
/*
多行注释1
多行注释2
*/
五、常用语句
1、alert语句
alert(英文翻译为“警报”)的用途:弹出“警告框”。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <script> alert(‘千古壹号‘); </script> </body> </html>
代码中,如果写了两个alert()语句的话,网页的效果是:弹出第一个警告框,点击确定后,继续弹出第二个警告框
2、console.log("")
console.log("")`表示在控制台中输出。console表示“控制台”,log表示“输出”。
在Chrome浏览器中,按F12即可打开控制台,选择「console」栏,即可看到打印的内容。
控制台是工程师、程序员调试程序的地方。程序员经常使用这条语句输出一些东西,来测试程序是否正确。
普通人是不会在意控制台的,但是有些网站另藏玄机。如百度首页的控制台,悄悄地放了一段招聘信息
总结:alert() 主要用来显示消息给用户,console.log() 用来给程序员自己调试用的。
3、prompt()
prompt()就是专门用来弹出能够让用户输入的对话框。用得少,测试的时候偶尔会用。
var a = prompt("请随便输入点什么东西吧");
console.log(a);
prompt()语句中,用户不管输入什么内容,都是字符串。
**alert()和prompt()的区别:**
- alert() 可以直接使用。
- prompt() 会返回用户输入的内容。我们可以用一个变量,来接收用户输入的内容。