JavaScript 基础
1.1JavaScript 概述
- JavaScript (简称 JS)是一种具有函数有限原则的轻量级、解释型或即时编译型的编程语言。
1.2JavaScript 的组成及其基本结构
- 使用 JavaScript之前,必须了解 JavaScript 由哪几部分组成,通常写在 HTML 结构的哪个地方,如何在网页中引入 JavaScript代码
1.2.1 JavaScript 的组成
- 一个完整的 JavaScript 由三部分组成。
1.ECMAScript
- ECMAScript 是一种由 Ecma 国际[前身为欧洲计算机制造商协会(European Computer Manufacturers Association)] 通过 ECMA-262 标准化的脚本程序设计语言。
- 主要描述了 JavaScript 的语法、变量、数据类型、运算符、逻辑控制语句、关键字、对象等。
2. DOM
- DOM (Document Object Model,文档对象模型)是 HTML 文档对象模型定义的一套标准方法,主要用来访问和操作 HTML 文档。
- 例如:电商网站页面中弹出的提示框、鼠标移动放大图片等效果都要通过操作 DOM 来完成。
3.BOM
-
BOM (Browser Object Model,浏览器对象模型) 是用于描述对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以于浏览器窗口进行互动的对象结构。
-
DOM 及 BOM 的内容将会在后面章节详细介绍,本章着重介绍 ECMAScript 标准。
1.2.2 JavaScript
- 在使用 JavaScript 时,可以用 结束标签为止。
- 语法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--2.内部样式-->
<script type="text/javascript">
document.write("Hello world");
</script>
</body>
</html>
- type 属性用于制定文本使用的语言类别是 text/javascript。
- 在浏览器运行的代码
-
注意
-
document.write() 表示用来向页面输出可以包含 HTML 标签的内容。
- 可以包含在文档中的任何地方,需要保证这些代码在被使用前已读取并记载到内容。
-
1.2.3 内部JavaScript 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--2.内部样式-->
<script type="text/javascript">
document.write("Hello world");
</script>
</body>
</html>
- 直接使用
1.2.4 外部JavaScript 文件
- 外部 JavaScript 文件是将 JavaScript 代码写入一个外部文件中,并以"**.js"为扩展名保存;
- 然后将该文件指定给
document.write("Hello world");
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 3.外部样式js-->
<script src="js/Demo01.js" type="text/javascript"/>
</head>
<body>
</body>
</html>
1.2.5 行内 JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--1.行内js-->
<input type="button" value="登录" onclick="javascript:prompt('确定要登录嘛','输入密码')">
<input type="button" value="登录" onclick="javascript:alert('确定要登录嘛')">
<input type="button" value="登录" onclick="javascript:confirm('确定要登录嘛')">
</body>
</html>
- 直接将 JavaScript 代码写入 HTML 标签中使用于简短的 JavaScript 代码,
- 如鼠标单击按钮弹出一个对话框等,这样通常会在按钮标签中加入 JavaScript 的处理程序。
- onclick 表示单击的时间处理程序,即当用户单击按钮时,就会执行"javascript:"后面的命令。alert()是一个函数,作用是向页面弹出一个对话框。
1.2.6小结
- 内部 JavaScript 文件仅适用代码量较少的单个页面的情况。
- 外部 JavaScript 文件适用于代码量多,并且可以重复应用于多个页面的情况。随着后续项目规格的增加,这种方式最为推荐。
- 直接写在 HTML 标签中则适用于代码量极少的情况,但是这种方式增加了 HTML 代码,没有将结构与交互分离开,所以不推荐使用。
1.3 变量的声明和赋值
1.3.1 变量的声明
-
在 JavaScript 中,使用变量前需要先声明变量,目前所学阶段所有的 JavaScript 变量都有关键则 var 声明。
-
语法
var 变量名;
- var 是声明变量所使用的关键字。在声明变量名时应注意,变量名可以由数字、字母、下划线及"$" 符号组成。
- 但首字母不能是数字,并且也不可以使用关键字命名。
var name;
- 可以使用一个关键字 var 同时声明多个变量,
- 语法
var name,sex,age;
- 注意
- 在 JavaScript 中,变量名区分英文字母大小写,所有字母大小不同的变量名表示不同的变量。
- 变量可以不经过声明被直接使用,但是这种方法很容易出错,且很难拍错,因此不推荐使用。
- 变量命名建议:应见名只意,即具有语义化;还可以使用驼峰式命名。
1.3.2 变量的赋值
- 在声明变量的同时也可以使用等号(=) 对变量进行初始化赋值,
- 语法
var 变量名=变量值;
- 使用等号 (=) 赋值后,即将变量值赋值给声明的变量名。
var name;
name="张三";
1.4 JavaScript的数据类型
- JavaScript 的弱类型脚本语言,声明变量时无须指定变量的数据类型,因为 JavaScript 变量的数据类型是解释时动态决定的。
- 在 JavaScript 中,提供了 3 中基本数据类型和 2 中特殊数据类型。
1.4.1 基本数据类型
1.数值类型
- 与强类型语言 Java 和 C# 不同,JavaScript 的数值类型不仅包括所有的整形变量,还不包括所有的浮点型变量。
var num=15;
var num=15.8;
- JavaScript 支持八进制和十六进制。八进制以 0 开头,其后的数字可以是任何八进制数组(0~7);十六进制以 0x 或 0X 开头,其后的数字时任意十六进制数字和字母 (09和AF)。
var num1=065; //065 等于十进制的53
var num2=0X3f; //0X3f 等于十进制的63
当数值类型超出了其表述返回时,将出现两个特殊值:Infinity (正无穷大) 和 -Infinity(负无穷大)。
//定义 x 为最大的数值
var x=1.345324684685737474636;
//再次增加x的值
x=x+le292;
//使用警告框输出x的值
alert(x);//结果为 Infinity (正无穷大)
-
在浏览器中运行上述代码会发现结果为 Infinity,标识无穷大。
-
在 JavaScript 中还有一个特殊值——NaN (Not a Number),表示非数字,它是数值类型。
typeof(NaN); //返回值为 number
- typeof() 函数判断某个值或变量的数据类型,所以当使用 typeof 判断 NaN 时,返回的结果时 number,即数值类型。
2.字符串类型
- JavaScript 的字符串必须用引号括起来,此处的引号既可以是单引号,也可以是双引号。
var str1="123abc";
var str2='123abc';
- JavaScript 以 string 类标识字符串,string 类包含了一系列方法,具体情况如下。
- charAt() :返回指定位置的字符。
- toUpperCase():把字符串转换成大写。
- toLowerCase():把字符串转换成小写。
- indexOf():返回某个指定的字符串在字符串中首次出现的位置。
- subString():用于提取字符串中介于两个指定下表之间的字符。
- split():用于把一个字符串分割成字符串数组。
- replace():用于在字符串中用一些字符替换另一些字符。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var str="123abc456DEF";
document.write("下标为1的字符是:"+str.charAt(1)+'<br/>');
document.write("把字符串转换成大写:"+str.toUpperCase()+'<br/>');
document.write("把字符串转换成小写:"+str.toLowerCase()+'<br/>');
document.write("查找abc在str中首次出现的位置:"+str.indexOf("abc")+'<br/>');
document.write("查找xyz在str中首次出现的位置:"+str.indexOf("xyz")+'<br/>');
document.write("返回索引6和9之间的字符串:"+str.substring(6,9)+'<br/>');
document.write("把字符串str分割为字符串数组"+str.split("")+'<br/>');
document.write("把DEF替换成789:"+str.replace("DEF","789"));
</script>
</body>
</html>
- “+” 代表拼接符,可以将字符串拼接起来。
3.布尔类型
- 布尔类型的值只有两个: true 和 false。布尔类型的值通常是逻辑运算的结果,用于标志对象的某种状态。
1.4.2 特殊数据类型
- 特殊数据类型包括空类型(null) 和未定义类型(undefined)。
- null 表示变量的值为空,可以用来检测某个变量是否被赋值。
- undefined 类型的值只有一个 undefined,该值用于标识某个变量不存在,或者没有为其分配值用于表示对象的属性不存在。
- 实际上,undefined 是null 派生来的,所以JavaScript 把它们定义为相等的。
alert(null==undefined);//返回值为true
- 尽管两个值相等,但它们的含义不同。
- undefined 标识没有为变量设置值火属性不存在;
- null 标识变量是有值得,只是其值为 null;
1.4.3 判断数据类型
- ECMAScript 提供了 typeof 运算符来判断某个值或变量的数据类型。
typeof(值或变量);
- 返回值有如下几种:
- number:如果变量是数值类型,则返回number。
- string:如果变量是字符串类型,则返回string。
- bolean:如果变量是布尔类型,则返回boolean。
- object:如果变量是空类型,或者是一种引用类型,如对象、函数、数组,则返回object。
- undefined:如果变量是未定义类型,则返回undefined。
1.5 运算符
- 于Java中的运算符一样,在JavaScript 中,运算符可分为算术运算符、比较运算符、逻辑运算符和赋值运算符。
1.5.1 算术运算符
符号 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 余数 |
++ | 递加 |
– | 递减 |
1.5.2 比较运算符
符号 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不相等 |
=== | 等值等型 |
!== | 不等值或不等型 |
1.5.3 逻辑运算符
符号 | 描述 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
1.5.4 赋值运算符
符号 | 描述 |
---|---|
= | 赋值 |
+= | 自增 |
-= | 自减 |
- 特别注意的是,“==” 用于一般比较,在比较时会进行数据类型隐式转换;
- “===” 用于严格比较,即只要数据类型不匹配就返回 false。
1.6 逻辑控制语句
- 在 JavaScript 中,逻辑控制语句用于控制程序的执行顺序,其可以分为条件语句和循环语句。
1.6.1 if 语句
- 在 if 语句中,可能有单分支语句,也可能有双分支语句,还可能有多分支语句。
1.单分支语句
- 由一个 if 语句,如果条件成立,则进入代码块开始执行语句。
- 语法
if(条件){
//条件为真时执行的代码
}
- 实例:当年龄大于等于18随时,弹出提示信息"你已经是成年人了"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var age=20;
if(age>=18)
{
alert("你已经是成年人了");
}
</script>
</body>
</html>
2.双分支语句
- 由两个分支线组成,如果 if 条件不成立,那么就会跳入else语句中。
- 语法
if(条件)
{
//条件为真要执行的代码
}else
{
//条件为假时要执行的代码
}
- 实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var age=16;
if(age>18)
{
alert("你已经是成年人了");
}else{
alert("你还是未成年人");
}
</script>
</body>
</html>
- 由于声明的变量 age 是 16 ,条件不成立。
3.多分支语句
- 由多个 if…else 语句组合在一起。
- 语法
if(条件){
//执行语句
}else if(条件){
//执行语句
}else{
//执行语句
}
- 示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var age=18;
if(age>18)
{
alert("你已经是成年人了");
}else if(age==18){
alert("恭喜您成为成年人");
}else
{
alert("你还是未成年人");
}
</script>
</body>
</html>
- 由于生命的 age 变量等于 18,所以满足第二个条件,因此页面会弹出消息"恭喜您成为成年人"。
1.6.2 switch 语句
- switch 语句比多分支语句结构更清晰
- 语法
switch(条件){
case 1:
//执行语句
break;
case 2:
//执行语句
break;
case 3:
//执行语句
break;
default:
//执行语句
break;
}
- break 关键字用于跳出某个case 语句。如果不书写 break 语句,则进入 case 语句以后会继续进入后面的 case 语句;
- default 关键字用于书写默认的条件。
- 如果前面 case 语句都不满足,就进入 default 语句。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var age=18;
switch(age){
case 20:
alert("你已经是成年人了");
break;
case 18:
alert("恭喜您成为成年人");
break;
default:
alert("你还是未成年人");
break;
}
</script>
</body>
</html>
1.6.3 小结
- JavaScript 中的 switch 语句和 if 语句都是用于条件判断的,但是当用于等职的多分支比较时,使用switch 语句可恶意使程序的结构更加清晰。
1.7 循环语句
1.7.1 for 循环
- 语法
for(表达式 1; 表达式2; 表达式3){
//循环体
}
- 执行的顺序为:
- 首先执行表达式 1 初始化变量;
- 然后进行表达式 2 循环条件的判断;
- 如果表达式 2 成立;
- 那么执行循环体。
- 循环体执行结束后,
- 表达式 3 增加/减少初始化变量的值;
- 然后再判断表达式 2 是否成立;
- 如果成立就执行循环体,否则循环体结束。
1.7.2 while 循环
- 语法
while(条件){
//循环体
}
- 其特点是先判断后执行,当条件为真时,就执行循环体;当条件为假时,就退出循环。
1.7.3 do-while 循环
- 语法
do{
//循环体
}while(条件);
- 其特点时限制性后判断,该语句表示反复执行循环体,知道条件为假时才退出循环。
1.7.4 for-in 循环
- for-in 循环常用对数组或对象的属性进行循环操作。
- 语法
for(变量 in 对象|数组){
//循环体
}
实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var fruit=["apple","orange","banana","peach"];
for (var i in fruit) {
document.write(fruit[i]+'<br/>');
}
</script>
</body>
</html>
- 使用 for in 变量 i 接收到的值是对于数组的下标
1.8 注释
- 注释用于解释 JavaScript 代码,增强可读性。
单行注释以 “//” 开头
//定义age变量为20
var age=20;
多行注释以 /* 开头,以 */ 结尾,
/*
定义age变量为20
*/
var age=20;
1.9 关键字和保留字
- ECMA-262 描述了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。
- 按照规则,关键字也是语言保留的,不能用作标识符。
1.9.1 关键字
关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
---|---|---|---|---|
break | delete | if | this | while |
case | do | in | throw | with |
catch | else | instanceof | try | —— |
continue | finally | new | typeof | —— |
debugger | for | return | var | —— |
default | function | switch | void | —— |
1.9.2 保留字
保留字 | 保留字 | 保留字 | 保留字 | 保留字 |
---|---|---|---|---|
abstract | debugger | goto | package | synchronized |
boolean | double | implements | private | throws |
byte | enum | import | protected | teansient |
char | export | int | public | —— |
class | extends | interface | short | —— |
const | final | long | static | —— |
volatile | float | native | super | —— |
1.10 系统对话框
- 浏览器可以通过 alert()、confirm()、prompt() 方法调用系统对话框想用户显示消息。
1.10.1 alert()
- alert() 方法用于向用户显示一个警告对话框,其中包含指定的文本和一个确定按钮。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
alert("警告")
</script>
</body>
</html>
- 使用时应注意:
- 在点击对话框的"确定"按钮之前,不能进行任何其他操作。
- 警告对话框通常可以用于调试程序。
- alert() 输出内容,可以是字符串或变量,与 document.write() 相似。
1.10.2 confirm()
-
confirm() 方法用于向用户显示一个消息对话框,该对话框可供用户进行选择,如"你好吗?"等。
-
其包含一个"确定"按钮和一个"取消"按钮
-
语法
confirm(str);
-
str 表示在消息对话框中要显示的文本,其返回值时不二类型,当点击确定:返回 true;点击取消:返回 false
-
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
var msg=confirm("你喜欢JavaScript 吗?");
if(msg==true)
{
document.write("很好,加油")
}else if(msg==false)
{
document.write("不喜欢也必须要学哦!JavaScript 很重要~~~")
}
</script>
</body>
</html>
弹出消息对话框效果
单机"确定"按钮后的效果
单机"取消"按钮后的效果图
- 可以发现,页面打开就会弹出消息对话框;
- 当单机"确定"按钮时,页面会输出"很好,加油";
- 当单机"取消"按钮时,页面会输出"不喜欢也必须要学哦!JavaScript 很重要~~~";
1.10.3 prompt()
- prompt() 方法会弹出一个提示对话框,等待用户输入一些数据。
- 语法
prompt("提示信息","输入框的默认信息");
- 第一个参数显示在对话框上,通常是一些提示信息;
- 第二个参数出现在用户输入的文本框中,且被选中,作为默认值使用。
- 如果省略第二个参数,则在提示对话框的输入文本框中会出现"undefined"。
- 在使用时,可以将第二个参数的值设置为空字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
prompt("请输入今天是几月几号","")
</script>
</body>
</html>