学习任务
学完JavaScript 基础语法内容后,我们可以完成下面的交互效果,可以实现如下4个功能。
计算机组成
软件
- 应用软件:浏览器(Chrome/IE/Firefox)、QQ、Sublime、Word
- 系统软件:Windows、Linux、mac OSX
硬件
- 三大件:CPU、内存、硬盘 -- 主板
- 输入设备:鼠标、键盘、手写板、摄像头等
- 输出设备:显示器、打印机、投影仪等
网页、网站和应用程序
- 网页:单独的一个页面
- 网站:一些列相关的页面组成到一起
- 应用程序:可以和用户产生交互,并实现某种功能。
什么是编程
编程:让计算机根据你设定好的流程去做事。
例如:你可以通过指令的方式让计算机去做事情
play 真的爱你.mp3;
这个时候计算会去播放歌曲真的爱你。但是计算机并不认识上面的英文单词和汉字。
计算机在执行指令之前会把指令转换成二进制的形式,例如下面的形式:
01000010110100110000110001100
我们不可能直接去拿二进制去编写指令(程序),这样太痛苦了,所以在和计算机进行交互的时候,我们可以通过一些高级语言,这些语言非常接近人类的语言。
前端开发必备的编程语言是 JavaScript,JavaScript 是由浏览器加载和执行的。
VSCode 插件
- 汉化:Chinese (Simplified) Language Pack for Visual Studio Code
- 不同类型的文件图标:Material Icon Theme
- 路径的只能提示:Path Intellisense
- 自动重命名结束标签:Auto Rename Tag
- 测试用 Web 服务器:Live Server
JavaScript 介绍
为什么要学习 JavaScript
我们在之前已经学习了 HTML 和 CSS 这两个技术,这两个技术能做的是页面的静态效果,如果想实现页面上的一些功能或者交换效果,比如轮播图、数据格式验证等,就要用到 JavaScript。简而言之:
- HTML - 页面的结构
- CSS - 页面的样式
- JavaScript - 页面的行为
什么是 JavaScript
- JavaScript 是一种运行在浏览器的编程语言。
- 编程语言就是跟计算机交流的语言,通过编程语言指挥计算机完成某件事情。常见的编程语言: java、c、c#、php。
- 跟其它编程语言不同的是 JavaScript 运行在浏览器
- 编程语言最终都会被某种翻译器转换成 CPU 能够执行的指令
- 扩展阅读:JavaScript的历史、JavaScript 20年
JavaScript 的组成
- ECMAScript - 简称 ES,用来规范 JavaScript 的语法的,具有多个版本:
-
- ECMAScript 1.0(1997年6月)
- ECMAScript 2.0(1998年6月)
-
- ECMAScript 3.0(1999年12月)
- ECMAScript 4(ECMAScript 5)
-
-
- 2008年7月发布前被废弃
-
-
- ECMAScript 5.1(ES5,2009年12月)
-
-
- 该版本力求澄清第3版中的歧义,并添加了新的功能。新功能包括:原生JSON对象、继承的方法、高级属性的定义以及引入严格模式。
-
-
- ECMAScript 2015(ES6,2015年6月)
- 此后按照年号每年更新一个版本
- DOM - 文档对象模型,用来操作页面上的标签的
- BOM - 浏览器对象模型,用来操作浏览器的部分功能的
JavaScript 能做什么
JavaScript 发展到现在几乎无所不能。
Atwood 定律:
- any application that can be written in JavaScript, willeventually be written in JavaScript.
- 任何能被 JavaScript 实现的应用最终都会由 JavaScript 实现.
- 网站/Web 应用
- 服务端开发(Node.js)
- 命令行工具(Node.js)
- 桌面程序(Electron)
- App(Cordova)
- 控制硬件-物联网(Ruff)
- 游戏开发(cocos2d-js)
JavaScript 应用演示
以下需要科学上网
- blockly-games.appspot.com blockly迷宫
JavaScript 初体验
JavaScript 和 CSS 一样,也有三种书写位置:
- 内嵌式
- 外链式
- 行内式
内嵌式
- 创建一个 HTML 文件,例如:index.html
- 在 HTML 文件的末尾,body 标签结束之前
<html>
<body>
<script>
alert('Hello World');
</script>
</body>
</html>
- 在浏览器中运行 HTML 文件即可看到效果
外链式
- 创建一个 HTML 文件,例如:index.html
- 创建一个以 .js 结尾的文件,例如:index.js
- 在 HTML 文件中引用刚刚创建好的 js 文件
<script src="index.js"></script>
- 在新建的 js 文件中输入以下代码
alert('Hello World');
- 在浏览器中运行 HTML 文件
- 注意:
-
- 引用外部 js 文件的 script 标签中不可以写JavaScript代码
行内式(了解)
<input type="button" value="点我" onclick="alert('Hello World')">
点击按钮,就会执行 js 代码
总结
- 实际工作/项目中都会使用外链式
- 前期学习 JavaScript 为了方便会使用内嵌式
- 行内式了解,以后见到内嵌式的代码能看懂
输入输出方法
在初体验中我们使用了 alert() 方法弹出一个消息提示,在 JavaScript 中,有多个可以弹出/输出消息的方法,在我们的仿 siri 项目中会用到其中的一些,比如:alert()、让用户输入内容的弹出框。
下面我们一起来学习几个常用的输入输出方法。
输出方法
alert()
- 作用:这个方法用于在浏览器上弹出消息提示框
- 用法:
alert("提示消息");
// or
alert('提示消息');
注意:这里的“消息提示”,既可以用英文状态下的单引号也可以用双引号。
console.log()
- 作用:可以在浏览器的开发者工具(F12打开)的控制台中输出消息,这样做的目的是为了将来方便调试程序,未来我们会经常用 console.log()。
- 在开发者工具的控制台还可以直接书写 JavaScript 代码看输出的结果。
- 用法:
console.log('输出消息')
输入方法
confirm()
- 作用:在浏览器里弹出一个确认框,比如删除提示
- 用法:
confirm('确认删除?');
prompt()
- 作用:在浏览器里弹出一个输入框,让用户输入内容
- 用法:
prompt('请输入你要查看的对象');
变量和常量
变量
如果我们使用 prompt() 方法让用户输入了数据,我们又想要把用户输入的数据保存起来,怎么办呢?
什么是变量
- 一个变量,就是一个用于存放数值的容器。这个数值可能是一个用于累加计算的数字,或者是一个句子中的字符串。变量的独特之处在于它存放的数值是可以改变的。
- 变量是计算机内存中存储数据的标识符,根据变量名称可以获取或修改内存中存储的数据
定义变量
- 语法
var 变量名称 = 数据;
// or
let 变量名称 = 数据;
定义变量有两个关键词 var/let,var 是过去定义变量的方式,let 是现在定义变量的方式。它们之间的区别需要学习完作用域之后再来解释。
使用 var/let 关键字,告诉浏览器,我们要定义一个变量,使用=号告诉浏览器,我们要把左边的数据存储到变量里面,当我们想使用这个数据的时候,就可以直接使用这个变量代替这个实际数据。
// 案例1:
var userName = prompt('请输入你的姓名');
console.log(userName);
// 案例2:
var num1 = 10;
var num2 = 20;
// 计算两个数字的和
console.log(num1 + num2);
定义变量可以分为两个过程:变量声明和变量赋值:
// 变量声明
var num;
// or
let num;
// 变量赋值
num = 10;
// or
num = 10;
变量是变化的量,我们可以重新给变量赋值:
let num = 20;
num = 100;
console.log(num);
变量可以一次定义多个并同时赋值
var a = 10, b = 20, c;
console.log(a, b, c);
// or
let a = 10, b = 20, c;
console.log(a, b, c);
数据如何在内存中存储的
下面我们来了解是如何通过变量名称找到内存中对应的数据的。
变量的命名规则和规范
- 规则 - 必须遵守的,不遵守会报错
-
- 由字母、数字、下划线、$符号组成,不能以数字开头
- 不能是关键字和保留字,例如:for、while。
-
- 区分大小写
- 使用 let 定义的变量名不能重复会冲突,使用 var 定义的变量名可以重复。
- 规范 - 建议遵守的,不遵守不会报错
-
- 变量名必须有意义
- 遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。例如:userName、userPassword
- 下面哪些变量名不合法
a
1
age18
18age
name
$name
_sex
&sex
theworld theWorld
// 变量名字是区分大小写的
var a = 10;
console.log(a);// 正常输出
console.log(A);// 在控制台中报错:Uncaught ReferenceError: A is not defined
// ReferenceError - 引用错误
// not defined - 未定义
// 意思是 A 这个变量我们没有定义就使用了,可见a和A是不一样的,不是同一个变量
关键字
关键字是在JavaScript语法中,具有特殊意义的单词,比如我们学习过的用于声明变量的var
// 变量名字不能使用关键字
var var = 20;
// 会在控制台中报错: Uncaught SyntaxError: Unexpected token var
// token - 标记,记号,在编程中我们翻译成 '标识符'
// 意思是这行有一个语法错误,出现了一个意料之外的标识符 var
保留字
JavaScript 是不断发展的,以前的功能用了以前的关键字,将来要加入新的功能的时候,可能要用到新的关键字,所有 JavaScript 在一开始的时候就保留了部分单词,以便将来把保留的单词作为关键字
案例
\1. 交换两个变量的值
\2. 不使用临时变量,交换两个数值变量的值
常量
常量跟变量非常相似,也是通过一个标识符来访问内容中的数据,但是跟变量不同的是常量中的数据是不可以修改的。
常量用来存储不可修改的数据,例如:数据中的 π。
// 计算圆的面积
// π 是常量不可被修改
const PI = 3.1415926;
// 半径
let r = 5;
// 圆的面积
let area = PI * r * r;
如果在某个位置 PI 的值被别人修改了,未来圆的面积会计算错误。
使用 const 定义的常量是不能被修改的,我们可以尝试一下:
PI = 5;
// 未捕获的类型错误:赋值给常量
// Uncaught TypeError: Assignment to constant variable.
常量的命名一般都大写,代表常量。
关于变量和常量我们先说到这里,下一小节,我们再来介绍 JavaScript 中的数据类型