# 变量
# 认识 JavaScript
JavaScript 是一种基于对象和事件驱动的简单描述性语言。它从服务器端被下载到客户端,由浏览器执行。
它可用于 HTML 和 Web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
其具有的特点如下:
- 一般用来编写客户端的脚本。
- 主要是用来在 HTML 页面中添加交互行为。
- 是一种解释性语言,边解释边执行。
怎么在 HTML 中引入 JavaScript 呢?
引入方式与 CSS 相似,有以下三种方式:
- 在 HTML 标签中直接引入,针对一些特别简短的 JavaScript 代码。
- 使用
script
标签可以将 JavaScript 代码嵌入到 HTML 文档的head
和body
里。 - 使用外部 JavaScript 文件,将 JavaScript 脚本代码写入一个后缀为
.js
的文件中,通过给script
标签设置src
属性的方式,引入这个文件。
# JavaScript 变量
在 JavaScript 中,使用 var
声明变量。
其语法格式为:
var 变量名 = 值; |
在 JavaScript 中给变量命名应该遵循以下原则:
- 变量名由字母、下划线、
$
或数字组成,并且必须由字母、下划线、$
开头。 - 变量名不能命名为系统关键字和保留字。
新建一个 index.html
文件,在其中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var str = "Hello JS!"; | |
var num = 1; | |
document.write(str); /* 在页面上输出变量 str 的值 */ | |
document.write(num); /* 在页面上输出变量 num 的值 */ | |
</script> | |
</head> | |
<body></body> | |
</html> |
# 数据类型
知识点
- 基本数据类型
- 引用数据类型
- typeof
# 数据类型的分类
在 JavaScript 中数据类型分为两种:
- 基本数据类型 :字符串(string)、数字(number)、布尔(boolean)、空(null)、未定义(undefined)。
- 引用数据类型 :对象(object)。
为什么需要这么多种数据类型呢?
- 不同的数据类型占有的存储空间不同,如果不标识数据类型的话,计算机会给不同的数据类型分配相同的储存空间,这就造成了资源浪费。
- 不同的数据类型在进行运算的时候,需要进行转换,同类型的数据才能进行计算,比如两个整型相加(+)是算数运算(1+1=2),两个字符串相加(+)是字符串拼接('1'+'2'='12')。
那么为什么又要分为基本数据类型和引用数据类型呢?
- 传参方式不同,基本数据类型是 值传递 ,而引用数据类型是 地址传递 。
- 储存方式不同,基本数据类型是 栈存储 ,而引用数据类型是 堆存储 。
# 基本数据类型的使用
新建一个 index.html
文件,在文件中写入以下内容:
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
</head> | |
<body> | |
<script> | |
var a = 5; | |
var b = a; | |
a++; // 相当于 a+1 的意思 | |
console.log("a 的值为:" + a); | |
console.log("b 的值为:" + b); | |
</script> | |
</body> | |
</html> |
在上述代码中, console.log
可以在控制台输出值,我们也可以使用 document.write
在页面输出值的方式来查看。
使用 Chrome 浏览器,按 F12,在控制台可以看到输出的值,显示如下所示:
从上图我们可以看到,a 输出的值为 6,因为执行了 a++ 的操作;而 b 的值为 5,是因为 a = 5 时,把 5 这个值赋给了 b。
# 引用数据类型的使用
新建一个 index1.html
文件,在文件中写入以下内容:
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
</head> | |
<body> | |
<script> | |
var a = new Object(); // 创建一个对象 | |
a.name = "小花"; | |
var b = a; | |
a.name = "小蓝"; | |
console.log("对象 a 的 name 属性值为:" + a.name); | |
console.log("对象 b 的 name 属性值为:" + b.name); | |
</script> | |
</body> | |
</html> |
在控制台我们可以看到如下所示的输出
从上图我们可以看到 a.name
和 b.name
的输出都是 “小蓝”,因为引用类型传递的是地址,所以 a 对象的数据改变,b 对象的数据也会改变。
# 查看数据类型
使用 typeof
关键字来查看数据类型。
新建一个 index2.html
文件,在文件中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
</head> | |
<body> | |
<script> | |
var a = 1; // 整型 | |
var b = "2"; // 字符串 | |
var c = true; // 布尔类型 | |
console.log("a 的数据类型是:" + typeof a); | |
console.log("b 的数据类型是:" + typeof b); | |
console.log("c 的数据类型是:" + typeof c); | |
</script> | |
</body> | |
</html> |
在控制台可以看到如下输出:
# 运算符和表达式
知识点
- 算术运算符
- 比较运算符
- 赋值运算符
- 逻辑运算符
- 条件运算符
# 算术运算符
在 JavaScript 中有七种算术运算符:加 +
、减 -
、乘 *
、除 /
、取余 %
、自加 ++
、自减 --
。
新建一个 index.html
文件,在其中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var result1 = 1 + 2; // 对 1 和 2 进行加法运算 | |
document.write(result1 + "<br>"); | |
var result2 = 7 - 5; // 对 7 和 5 进行减法运算 | |
document.write(result2 + "<br>"); | |
var result3 = 8 / 2; // 对 8 和 2 进行除法运算 | |
document.write(result3 + "<br>"); | |
var result4 = 6 * 3; // 对 6 和 3 进行乘法运算 | |
document.write(result4 + "<br>"); | |
var a = 10; | |
var result5 = ++a; // 变量 a 做自加 | |
document.write(result5 + "<br>"); | |
var b = 10; | |
var result6 = --b; // 变量 b 做自减 | |
document.write(result6 + "<br>"); | |
var result7 = 9 % 2; // 对 9 和 2 做余运算 | |
document.write(result7 + "<br>"); | |
</script> | |
</head> | |
<body></body> | |
</html> |
在上面代码中我们使用 ++a
对变量 a 做自加运算,得到的结果是 11;使用 --b
对变量 b 做自减运算,得到的结果是 9。同学们有没有想过,如果我们把 ++
和 --
放在变量的后面会发生什么呢
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var a; | |
var i = 10; | |
a = i++; | |
document.write("变量 a 的值为 " + a + "<br>"); | |
document.write("变量 i 的值为 " + i); | |
</script> | |
</head> | |
<body></body> | |
</html> |
效果如下:
从上面可以看出,把 ++
写在变量后面,先执行了赋值运算,所以变量 a 输出的值为 10,然后 i 再进行自加,所以变量 i 输出的值为 11。
比较运算符是比较操作数,并根据表达式判断为真或为假,来返回一个布尔类型的值。
在 JavaScript 中有如下表所示的比较运算符。
运算符 | 描述 |
---|---|
等于(==) | 当等于号左右两边的操作数相等时,返回 true 。 |
不等于(!=) | 当不等号左右两边的操作数不相等时,返回 true 。 |
全等(===) | 当全等号左右两边的操作数相等且类型相同时,返回 true 。 |
不全等(!==) | 当不全等号左右两边的操作数不相等或者类型不相同时,返回 true |
大于(>) | 当大于号左边的操作数大于右边的操作数时,返回 true 。 |
大于等于(>=) | 当大于等于号左边的操作数大于或者等于右边的操作数时,返回 true 。 |
小于(<) | 当小于号左边的操作数小于右边的操作数时,返回 true 。 |
小于等于(<=) | 当小于等于号左边的操作数小于或者等于右边的操作数时,返回 true 。 |
这里我们来举个例子吧!👻
新建一个 index1.html
文件,在其中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var a = 2 > 3; | |
var b = 4 < 5; | |
var c = 3 >= 1; | |
var d = 3 <= 1; | |
var e = 4 == 0; | |
var f = 5 != 4; | |
var g = 0 !== true; | |
var h = 0 === true; | |
document.write("2 > 3 的结果为 " + a + "<br>"); // 因 2 小于 3 所以结果为 false | |
document.write("4 < 5 的结果为 " + b + "<br>"); // 因 4 小于 5 所以结果为 true | |
document.write("3 >= 1 的结果为 " + c + "<br>"); // 因 3 大于等于 1 所以结果为 true | |
document.write("3 <= 1 的结果为 " + d + "<br>"); // 因 3 不是小于等于 1 所以结果为 false | |
document.write("4 == 0 的结果为 " + e + "<br>"); // 很显然 4 不等于 0 所以结果为 false | |
document.write("5 != 4 的结果为 " + f + "<br>"); // 5 不等于 4 所以结果为 true | |
document.write("0 !== true 的结果为 " + g + "<br>"); // 0 不全等于 true 所以结果为 true | |
document.write("0 === true 的结果为 " + h); // 0 不全等于 true 所以结果为 false | |
</script> | |
</head> | |
<body></body> | |
</html> |
比较运算符通常在流程控制语句中作为条件判断使用,
# 赋值运算符
在 JavaScript 中,有五种赋值运算符: =
、 +=
、 -=
、 *=
、 /=
。
新建一个 index2.html
文件,在其中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var a = 2; | |
a += 2; // 相当于 a = a + 2 | |
document.write(a + "<br>"); | |
a -= 1; // 此时的 a = 4,相当于 a = a - 1 | |
document.write(a + "<br>"); | |
a *= 6; // 此时的 a = 3,相当于 a = a * 6 | |
document.write(a + "<br>"); | |
a /= 2; // 此时的 a = 18,相当于 a = a / 2 | |
document.write(a + "<br>"); | |
</script> | |
</head> | |
<body></body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 逻辑运算符
在 JavaScript 中,逻辑运算符包括:与 &&
、或 ||
、非 !
。
假设 p 和 q 代表两个条件,我们用 0 代表假(false),用 1 代表真(true),其逻辑运算真值表可以如下所示:
这里我们来举个例子吧!
新建一个 index3.html
文件,在其中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var a = 0 && 1; // 0 和 1 做与运算,结果为 0 | |
var b = 0 || 1; // 0 和 1 做或运算,结果为 1 | |
var c = !1; // 非 1 的结果为 false | |
document.write("0 && 1 的结果为 " + a + "<br>"); | |
document.write("0 || 1 的结果为 " + b + "<br>"); | |
document.write("!1 的结果为 " + c + "<br>"); | |
</script> | |
</head> | |
<body></body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 条件运算符
条件运算符也可叫三目运算符,你可以用来判断条件的真假,根据真假执行不同的语句。
条件运算符的使用格式如下:
条件表达式 ? 表达式1 : 表达式2 |
当条件表达式的结果为 true,则问号后面的「表达式 1」将会执行;如果条件表达式结果为 false,则冒号后面的「表达式 2」将会执行。
新建一个 index4.html
文件,在其中写入以下内容。
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Document</title> | |
<script> | |
var a = 2, | |
b = 1; | |
var result = a > b ? "正确" : "错误"; | |
document.write(result); | |
</script> | |
</head> | |
<body></body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
result = a > b ? "正确" : "错误"
判断变量 a 的值是否大于变量 b 的值。在代码中,给变量 a 赋值为 2,给变量 b 赋值为 1,所以 a 大于 b,满足条件,result 取值为 “正确”。
# 实验总结
在本节实验中给大家介绍了 JavaScript 中五种基本的运算符,这里我们一起来总结一下:
- 算术运算符:+、-、*、/、%、++、--
- 比较运算符:>、<、>=、<=、、!=、=、!==
- 赋值运算符:=、+=、-=、*=、/=
- 逻辑运算符:&&、||、!
- 条件运算符:条件表达式?表达式 1 : 表达式 2
# 分支与循环
知识点
- 分支结构
- 循环结构
# 分支结构
何为分支结构呢?
分支结构就是会根据条件判断来选择执行的路径。
在 JavaScript 中分支结构有两种:
- if 语句。
- switch 语句。
# if 语句
if 语句有以下三种形式:
- 单分支语句。
- 双分支语句。
- 多分支语句。
接下来我们就对这三种 if 语句分别做一下练习来了解它们之间的区别。
# 单分支语句
if...
语句的执行流程如下图所示:
语法格式为:
if (条件表达式) { | |
} |
这里我们来举个例子吧!👻
新建一个 index.html
文件,在其中写入以下内容。
<!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> | |
var age = 15; // 定义名为 age 的变量,并赋值为 15 | |
// 判断 age 变量是否小于 18,判断为真,页面上输出 if 语句中的文字 | |
if (age < 18) { | |
document.write("年龄低于 18 岁。"); | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 双分支语句
if...else
语句的执行流程如下图所示:
其语法格式为:
if (条件表达式) { | |
} else { | |
} |
这里我们来举个例子吧!👻
新建一个 index1.html
文件,在其中写入以下内容。
<!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> | |
var age = 20; // 定义名为 age 的变量,并赋值为 20 | |
// 判断 age 变量是否小于 18,判断为真,输出年龄低于 18 岁;判断为假,输出年龄大于 18 岁 | |
if (age < 18) { | |
document.write("年龄低于 18 岁。"); | |
} else { | |
document.write("年龄大于 18 岁。"); | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 多分支语句
if...else if...else
执行流程如下图所示:
其语法格式为:
其语法格式为:
if (条件表达式) { | |
} else if (条件表达式) { | |
} else { | |
} |
这里我们来举个例子吧
新建一个 index2.html
文件,在其中写入以下内容。
<!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> | |
var score = 65; // 定义一个名为 score 的变量,并赋值为 65 | |
// 判断 score 是否小于 60,若为真,则输出成绩不合格;若为假,又判断 score 是否大于等于 60 且小于 80,若为真输出成绩良;若为假,输出成绩优 | |
if (score < 60) { | |
document.write("成绩不合格"); | |
} else if (60 <= score && score < 80) { | |
document.write("成绩良"); | |
} else { | |
document.write("成绩优"); | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# switch 语句
switch 语句的语法格式为:
switch (条件) { | |
case 条件1: | |
break; | |
case 条件2: | |
break; | |
default: | |
break; | |
} |
这里我们来举个例子吧!
新建一个 index3.html
文件,在其中写入以下内容。
<!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> | |
var score = 5; // 定义一个名为 score 的变量,且赋值为 5 | |
switch ( | |
score // 判断 score 是否有对应的编号,若有,在页面上输出相应的内容 | |
) { | |
case 1: | |
document.write("等级一"); | |
break; | |
case 2: | |
document.write("等级二"); | |
break; | |
case 3: | |
document.write("等级三"); | |
break; | |
case 4: | |
document.write("等级四"); | |
break; | |
case 5: | |
document.write("等级五"); | |
default: | |
break; | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
if 语句和 switch 语句都是分支结构,同学们有没有想过,它们之间有什么区别呢?我们在什么场景下使用呢?
先说说 switch,它是先设置一个表达式,表达式的值会与 case
后面接的值进行比较,若匹配到则执行;若不匹配,则退出。这相当于是,给你几个编有序号的盒子,你说出一个编号,若有,你可以打开这个盒子;若没有,游戏结束。
再说说 if,它是根据条件对值进行判断,当不满足条件你可以有另一种选择。
所以,当我们只需要对几个固定的值进行判断时,可以选择用 switch 语句,其他情况建议选择 if 语句,因为 if 语句可读性更强。
# 循环结构
环结构就是当满足判断条件,程序就一直在循环体中运行;当不满足条件时,退出循环。
这里会给大家介绍 JavaScript 中四种循环语句,分别是
- while 语句
- do...while 语句
- for 语句
- for...in 语句
# while 语句
while
语句是当满足条件时,便执行 while
语句中的内容,这种循环属于先判断再执行。
其语法格式为:
while (条件) {} |
这里我们来举个例子吧!👻
新建一个 index4.html
文件,在其中写入以下内容。
<!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> | |
var num = 0; | |
while (num < 10) { | |
document.write(num); | |
num++; | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# do...while 语句
do...while
语句是先执行一次循环体再判断是否符合条件。
其语法格式为:
do {} while (条件); |
这里我们来举个例子吧!👻
新建一个 index5.html
文件,在其中写入以下内容。
<!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> | |
var num = 0; | |
do { | |
document.write(num); | |
num++; | |
} while (num < 10); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# for 语句
for
语句,会设置一个初始值,循环条件,当不满足条件时退出循环。
其语法格式为:
for (初始化表达式; 条件表达式; 循环后的操作) {} |
这里我们来举个例子吧!👻
新建一个 index6.html
文件,在其中写入以下内容。
<!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> | |
var num = 10; | |
for (var n = 0; n < num; n++) { | |
document.write(n); | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# for...in 语句
for...in
语句循环一个指定的变量来循环指定对象的所有可枚举属性。
其语法格式为:
for (i in obj) { | |
} |
这里我们来举个例子吧!👻
新建一个 index7.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["小红", "小蓝", "小白", "小黑"]; | |
for (i in arr) { | |
r = "欢迎" + arr[i] + "来到蓝桥云课。" + "</br>"; | |
document.write(r); | |
} | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
从上图效果我们可以看到,当使用 for...in
去遍历数组时,返回的是数组元素的下标值。
# 函数
什么是函数呢?
函数是用来实现某个功能的,我们可以通过调用这个函数,重复使用该功能,这样就避免代码中出现重复的代码。
# 函数的使用
在 JavaScript 中有两种函数,一种是有返回值的函数,一种是没有返回值的函数。
定义函数的格式为:
function 函数名(参数){ | |
... | |
return 返回值; | |
} |
注意:参数可传递也可不传,返回值也是可有可无。
这里我们来举个例子吧!
新建一个 index.html
文件,在其中写入以下内容。
<!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> | |
function Sum(a, b) { | |
sum = a + b; | |
document.write(a + "+" + b + "=" + sum); | |
} | |
Sum(4, 5); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
在上面代码中,定义了一个名为 Sum
的函数,在函数里可以计算两个数的和,并在页面上显示出结果。
# 变量的作用域
知识点
- 全局作用域
- 局部作用域
# 变量作用域的使用
作用域是变量与函数的可访问范围,在 JavaScript 中,变量的作用域有全局作用域和局部作用域两种。
# 局部作用域
在函数内声明的变量为局部变量,作用域只在函数内部有效,也只能被函数内部访问。
注:正因为局部变量只作用于函数内部,所以不同函数在函数内部是可以使用相同名称的变量;函数开始执行时创建局部变量,函数执行完成后局部变量会自动销毁。
新建一个 index.html
文件,在其中写入以下内容。
<!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> | |
function Test() { | |
var str = "www.lanqiao.cn"; | |
document.write("我最喜欢的网站:" + str + "<br>"); | |
} | |
Test(); | |
var str; | |
document.write("函数外部:" + str); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 全局作用域
在函数外部声明的变量,即为全局变量。全局变量的作用域针对整个全局,简单来说,就是网页的所有脚本和函数都能够访问它。
这里我们来举个例子吧!👻
新建一个 index1.html
文件,在其中写入以下内容。
新建一个 index1.html
文件,在其中写入以下内容。
<!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> | |
var str = "www.lanqiao.cn"; | |
document.write("函数外部:" + str + "<br>"); | |
function Test() { | |
document.write("函数内部:" + str); | |
} | |
Test(); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 内置对象
本节实验带大家认识 JavaScript 中四种常见的内置对象,并给大家介绍每种对象的常用方法和属性。
知识点
- 数学对象
- 日期对象
- 数组对象
- 字符串对象
# 数学对象
JavaScript 中的数学对象为 Math,它的内部有一些数学的属性和函数方法。
Math 的常用属性如下表所示:
属性 | 描述 |
---|---|
Math.E | 自然对数的底数 |
Math.LN2 | 2 的自然对数 |
Math.PI | 圆周率 |
Math.SQRT2 | 2 的平方根 |
Math 的常用方法如下表所示:
属性 | 描述 |
---|---|
Math.abs(x) | 返回一个数的绝对值。 |
Math.pow(x, y) | 返回一个数的 y 次幂。 |
Math.random() | 返回一个 0 到 1 之间的伪随机数(不包括 1)。 |
Math.sqrt(x) | 返回一个数的平方根。 |
Math.round() | 返回四舍五入后的整数。 |
Math.exp(x) | 返回欧拉常数的参数次方。 |
这里我们来举个例子吧
建一个 index.html
文件,在其中写入以下内容。
<!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> | |
document.write("圆周率为 " + Math.PI + "<br>"); | |
document.write("2 的平方根为 " + Math.SQRT2 + "<br>"); | |
document.write("自然对数的底数为 " + Math.E); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 日期对象
在 JavaScript 中,日期对象是 Date,用于处理日期和时间。
其常用方法如下所示:
方法 | 描述 |
---|---|
getDate() | 返回一个月的某一天。 |
getDay() | 返回一周中的某一天。 |
getFullYear() | 返回年份。 |
getHours() | 返回小时。 |
getMonth() | 返回月份。 |
getTime() | 返回毫秒数。 |
setFullYear() | 设置年份。 |
setDate() | 设置一个月中的某一天。 |
setMonth() | 设置月份。 |
新建一个 index1.html
文件,在其中写入以下内容。
<!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> | |
var date = new Date(); // 实例化 Date 对象 | |
var month = date.getMonth() + 1; // 获取月份,取值为 0(一月)到 11(十二月)之间的整数 | |
document.write( | |
"今天是" + | |
date.getFullYear() + | |
"年" + | |
month + | |
"月" + | |
date.getDate() + | |
"日" + | |
"<br>" | |
); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 数组对象
在 JavaScript 中,数组对象是 Array
,在其语法格式为:
var 数组名 = new Array(元素1, 元素2,...,元素n); |
注意:我们在定义数组时,不一定要写入元素,可以只定义一个空数组。
创建数组我们还可以简写为:
var 数组名 = [元素1, 元素2,...,元素n]; |
例如,我们定一个名为 nums
的数组。
var nums = [1, 2, 3]; |
在数组中,每一个子项都有其对应的编号,这样的编号被称为下标,下标从 0 开始。
当我们想要取出数组中的某个值时,下标就起作用了,比如我们取出数组中的第二个值 2。
nums[1]; |
在数组对象中,它有很多方法和属性帮助我们更加灵活地处理数组
# slice()
slice()
是用来做数组切片操作的,也就是取数组中的部分值,例如:
arr.slice(2, 4); |
表示取名为 arr
的数组中下标从 2 到 4 的值。
这里我们来举个例子吧!👻
新建一个 index2.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["苹果", "梨子", "橙子", "葡萄", "樱桃", "芒果"]; | |
document.write(arr.slice(1, 4)); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# unshift()
unshift()
可以在数组的头部增加新的元素。
使用格式:
数组名.unshift(待添加项); |
这里我们来举个例子吧!👻
新建一个 index3.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["苹果", "梨子", "橙子", "葡萄", "樱桃", "芒果"]; | |
arr.unshift("释迦果"); | |
document.write(arr); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# shift()
shift()
可以删除数组的首元素。
使用格式:
数组名.shift(); |
这里我们来举个例子吧!👻
新建一个 index4.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["苹果", "梨子", "橙子", "葡萄", "樱桃", "芒果"]; | |
arr.shift(); | |
document.write(arr); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# sort()
sort()
可以给数组中的元素从小到大进行排序。
使用格式:
数组名.sort(); |
这里我们来举个例子吧!👻
新建一个 index5.html
文件,在其中写入以下内容。
<!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> | |
var arr = [2, 3, 4, 8, 1]; | |
document.write(arr.sort()); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# reverse()
reverse()
可以将数组中的元素进行逆序排列。
使用格式:
数组名.reverse(); |
这里我们来举个例子吧!👻
新建一个 index6.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["一", "二", "三", "四"]; | |
document.write(arr.reverse()); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# join()
join()
可以将数组中的字符拼接成字符串。
使用格式:
数值名.join(); |
这里我们来举个例子吧!👻
新建一个 index7.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["H", "e", "l", "l", "o"]; | |
document.write(arr.join("")); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# 获取数组的长度
我们可以使用 length
来获取数组的长度。
使用格式:
数组名.length; |
这里我们来举个例子吧!👻
新建一个 index8.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["苹果", "梨子", "橙子", "葡萄", "樱桃", "芒果"]; | |
document.write("数组的长度为 " + arr.length); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# concat()
concat()
可以将两个数组拼接在一起。
使用格式:
// 将 数组 2 拼接到 数组 1 里 | |
数组1.concat(数组2); |
这里我们来举个例子吧!👻
新建一个 index9.html
文件,在其中写入以下内容。
<!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> | |
var arr1 = ["柠檬", "苹果", "草莓"]; | |
var arr2 = ["葡萄", "西瓜", "柚子"]; | |
document.write(arr1.concat(arr2)); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# includes()
includes()
可以用来判断该数组中是否包含某个元素。
使用格式:
数组.includes(元素); |
这里我们来举个例子吧!👻
新建一个 index10.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["柠檬", "苹果", "草莓"]; | |
document.write("水果清单里有西瓜吗?" + arr.includes("西瓜") + "<br>"); | |
document.write("水果清单里有苹果吗?" + arr.includes("苹果")); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# toString()
toString()
可以将数组中的值转换成字符串类型。
使用格式:
数组名.toString(); |
这里我们来举个例子吧!👻
新建一个 index11.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["Hello", "string"]; | |
document.write("arr 的类型为 " + typeof arr + "<br>"); | |
document.write("arr.toString() 的类型为 " + typeof arr.toString()); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
typeof 是用来查看数据类型的。
# indexOf()
indexOf()
可以用来查找指定元素的下标值。
使用格式:
arr.indexOf(元素); |
这里我们来举个例子吧!👻
新建一个 index12.html
文件,在其中写入以下内容。
<!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> | |
var arr = ["梨子", "西瓜", "梨子", "葡萄", "柚子"]; | |
document.write("返回梨子的索引:" + arr.indexOf("梨子") + "<br>"); | |
document.write("返回樱桃的索引:" + arr.indexOf("樱桃")); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
注意:如果查找到多个匹配的元素时,返回的是第一个匹配的元素下标。
# 字符串对象
我们通常定义一个字符串,方法如下:
var str = "HELLO"; |
其实这是以种简写的方式,完整的定义方法如下:
var str = new String("HELLO"); |
从完整的字符串定义方式中,我们可以看出 String
就是字符串对象了。
接下来我们学一学字符串对象的属性和方法吧!
# 获取字符串长度
获取字符串的长度与获取数组的长度是一样的,都是使用 length
。
使用格式:
字符串.length; |
这里我们来举个例子吧!👻
新建一个 index13.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write("str 字符串的长度为 " + str.length); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# toLowerCase()
toLowerCase()
可以把字符串的大写字母转换成小写字母。
使用格式:
字符串.toLowerCase(); |
这里我们来举个例子吧!👻
新建一个 index14.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write(str.toLowerCase()); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# toUpperCase()
toUpperCase()
可以把字符串中的小写字母转换成大写字母。
使用格式:
字符串.toUpperCase(); |
这里我们来举个例子吧!👻
新建一个 index15.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write(str.toUpperCase()); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# charAt()
charAt()
是用于根据指定下标从一个字符串中返回指定的字符。
使用格式:
字符串.charAt(下标值); |
这里我们来举个例子吧!👻
新建一个 index16.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write("第 7 个字符为 " + str.charAt(7)); // 获取下标为 7 的字符 | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# substring()
substring()
可以通过下标来选取字符串中的部分字符。
使用格式:
字符串.substring(); |
这里我们来举个例子吧!👻
新建一个 index17.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write("第 7-10 的字符为 " + str.substring(7, 10)); // 获取下标为 7-10 的字符 | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# replace()
replace()
可以用来替换指定字符串的内容。
字符串.replace(待替换的字符串, 新的字符串); |
这里我们来举个例子吧!👻
新建一个 index18.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write(str.replace("JavaScript", "World")); // 替换指定字符串 | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# split()
split
可以使用指定的分隔符将一个字符串分割成子字符串数组。
使用格式如下:
字符串.split(); |
这里我们来举个例子吧!👻
新建一个 index19.html
文件,在其中写入以下内容。
<!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> | |
var str = "Hello,Java,Script"; | |
var arr = str.split(","); // 已逗号划分字符串 | |
document.write("第一个元素为:" + arr[0] + "<br>"); | |
document.write("第二个元素为:" + arr[1] + "<br>"); | |
document.write("第三个元素为:" + arr[2] + "<br>"); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。
# indexOf()
indexOf()
是寻找某个字符在字符串中首次出现的位置。
使用格式:
字符串.indexOf(字符); |
这里我们来举个例子吧!👻
新建一个 index20.html
文件,在其中写入以下内容。
<!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> | |
var str = "HelloJavaScript"; | |
document.write("a 首次出现的位置:" + str.indexOf("a")); | |
</script> | |
</body> | |
</html> |
启动 8080 端口,打开 Web 服务,可以看到如下结果。