文章目录
JavaScript简单介绍
JavaScript发展历史:
- 由布兰登·艾奇在1995年用时10天发明。由于他最早在网景公司工作,因此网景公司最初将其命名为
LiveScript
,后来在与Sun公司合作之后将其改名为JavaScript
,简称为JS
。 JavaScript
本身和Java语言并没有任何关系。
JavaScript是什么:
JavaScript
是世界上最流行的语言之一,是一种运行在客户端的脚本语言。- 之所以说该语言是脚本语言,是因为该语言不需要进行编译,在运行过程中由JS解释器(也被称为JavaScript引擎)逐行来进行解释然后执行。
- 现在也可以基于
Node.js
技术来进行服务器端的编程。
JavaScript有什么用 :表单动态检验、网页特效制作、服务端开发(基于Node.js
)、桌面程序开发、APP开发、物联网中的控制硬件开发(基于Ruff
)、游戏开发(基于cocos2d-js
)等各种任务。
浏览器如何执行JS代码:浏览器可以分为两部分,分别是渲染引擎和JS引擎,其中JS引擎就用来执行JS代码。
- 渲染引擎 :用来解析HTML和CSS代码,也被称为浏览器内核,例如
Blink
和Webkit
等等。 - JS引擎 :也就是JS解释器,用来读取网页中的JS代码,对其处理后运行,例如
V8
等。V8
号称是最快的JS引擎。
JS的组成 :JS可以分为ECMAScript
、DOM
和BOM
三部分。
- ECMAScript :
- 由原欧洲计算机制造协会(
ECMA
)进行标准化的一门编程语言,这种语言在万维网上应用广泛,往往被称为JavaScript
或Jscript
(微软公司模仿JS发明的语言),但是实际后面两种语言都是ECMAScript
的实现和扩展。 - ECMA规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
- 由原欧洲计算机制造协会(
- DOM:全称为文档对象模型,是W3C组织推荐的处理可扩展标记语言的标准编程接口,通过DOM提供的接口可以对网页中的各种元素进行操作(例如设置大小、颜色和位置等)。在后续API的学习笔记中会涉及,此处暂时不进行详细解释。
- BOM:全称为浏览器对象模型,提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,例如弹出对话框、控制浏览器跳转、获取分辨率等。
JS的书写位置:JS的书写位置可以分为行内式、内嵌式和外部式。
- 行内式 :
- 行内式的语法 :直接写到元素的内部,例如
<input type="button" value="test" onclick="alert('hello world')">
。 - 行内式的特点:适合于单行或少量JS代码,但是可读性较差,引号使用容易出错(尤其是引号多层嵌套时),仅仅在特殊情况下使用。
- 行内式的注意事项:在HTML代码中推荐使用双引号,在JS中推荐使用单引号。
- 行内式的语法 :直接写到元素的内部,例如
- 内嵌式 :
- 内嵌式的语法 :在网页的HTML源代码的
<head>
标签中,增加一对<script></script>
标签(一般是放在内嵌式CSS样式标签<style></style>
的下面),在这一对标签中写入JS代码。 - 内嵌式的特点:是学习JS时常用的一种方式。
- 内嵌式的语法 :在网页的HTML源代码的
- 外部式 :
- 外部式的语法 :新建一个后缀名为
.js
的文件,并直接在其中写入JS代码。接着,在HTML源代码中引入该文件,引入语法为:<script src="JS文件路径"></script>
。 - 外部式的特点:利于HTML页面代码结构化,可以将网页的结构和样式与行为分离开,并且有利于文件级的代码复用,适用于JS代码量很大的情况。
- 外部式的语法 :新建一个后缀名为
JavaScript中的注释和输入输出语句
JS中的注释:注释可以分为单行注释和多行注释两种。
- 单行注释 :在一行代码的前面加上
//
即可。在VsCode中可以使用Ctrl + /
进行单行注释。 - 多行注释 :在注释的开头使用
/*
,在注释的结尾加上*/
。在VsCode中可以使用Shift + Alt + A
进行多行注释。
JS中的输入输出语句:
- 输入函数prompt :语法为
prompt("提示字符串")
,该函数可以在浏览器中弹出一个输入框,获取用户的输入,获取的输入类型是一个字符串。 - 输出函数alert :语法为
alert("输出的字符串")
,该函数可以在浏览器中以弹出警示框的形式给用户一个输出反馈。 - 控制台输出函数console.log :语法为
console.log("输出的字符串")
,该函数可以在控制台中进行输出,用于程序调试等过程。在浏览器中可以通过按下F12
键打开控制台,查看输出结果。
JavaScript中的变量
变量的使用方式:JS中变量的使用也需要先进行声明,然后才能赋值。
- 变量的声明 :
var 变量名;
。var是JS中的一个专门用来声明变量的关键字。变量的声明过程中也可以对变量进行初始化。另外,还可以一次性声明多个变量,多个变量之间使用英文逗号分隔。 - 变量的赋值 :
变量名 = 变量值
。对于没有进行过赋值的变量,其默认值是undefined
。 - 允许不声明直接使用变量:JS中其实也允许不声明只赋值后直接使用变量,但是这种方式不推荐。
- 变量名命名规则:由大小写字母、数字、下划线和美元符号组成。变量名区分大小写,不能以数字开头,不能是关键字。
JavaScript中的数据类型
JavaScript是一种弱类型语言(也被称为动态语言),意味着声明变量时无需指定类型,类型会在程序的运行过程中被自动确定。
- JS数据类型分类 :可以分为简单数据类型和复杂数据类型两类。简单数据类型包括
Number
、String
、Boolean
、Undefined
、Null
等,复杂数据类型主要是对象。- Number :数字型,包含整型值和浮点型值,默认值是
0
。- 不同的进制 :可以加前缀
0
表示八进制整数,加前缀0x
表示十六进制整数。 - 最大值和最小值 :
Number.MAX
和Number.MIN
分别表示该类型的最大表示数字和最小表示数字。 - 无穷大和无穷小 :常量
Infinity
和-Infinity
表示无穷大和无穷小。 - 非数值 :常量
NaN
用于表示非数值。
- 不同的进制 :可以加前缀
- String :字符串型,需要使用一对引号进行表示,默认值是空字符串。
- 引号的选择:在JS中为了与HTML和CSS代码进行区分,推荐使用单引号来表示字符串。
- 引号的嵌套:如果一个字符串中本身还有引号,则要和表示字符串的引号不同,即表示字符串的引号是单引号时,字符串内部的引号应该采用双引号。
- 转义字符 :JS中常用的转义符如下:
\n
表示换行、\b
表示单个空格、\\
表示单斜杠、\t
表示缩进。重点记忆换行和缩进即可。 - 字符串的长度获取 :可以通过字符串的
length
属性获取字符串的长度。 - 字符串的拼接 :可以通过
+
运算符来拼接两个字符串。如果和字符串拼接的数据的类型不是字符串,则会自动将其转换为字符串。
- Boolean :布尔值类型,
true
和false
分别等价于1
和0
,默认值是false
。 - Undefined :表示声明了一个变量但是没有对该变量进行赋值。进行字符串相加时也会变成字符串"
undefined
",和数值运算结果是NaN
。 - Null :表示空变量。可以使用
isNaN(变量名)
的方式来检测一个变量是否是空的,返回值是一个布尔值。
- Number :数字型,包含整型值和浮点型值,默认值是
- 获取JS变量的数据类型 :使用
typeof 变量名
的方式可以获取一个变量的数据类型,其中typeof
是JS中的一个关键字。 - JS中的数据类型转换 :
- 将数据转换为字符串 :
- 使用该变量的toString方法 :
变量名.toString()
。 - 使用String函数进行强制转换 :
String(变量名)
。 - 与一个空字符串拼接 :
"" + 变量名
。这是一种最常用的方法,是一种隐式转换的方法。
- 使用该变量的toString方法 :
- 将数据转换为数字 :前两种方法是重点。
- 使用parseInt(string)函数:该函数可以将一个字符串转换为整型数字。这个函数会从字符串的首字符开始解析,直到找到第一个不是数字的字符为止。
- 使用parseFloat(string)函数:该函数可以将一个字符串转换为浮点型数字。该函数也会从字符串的首字符开始解析,直到找到第一个不是浮点数组成的字符为止。
- 使用Number()函数强制转换:将一个数据强制转换为数字类型。
- 使用算术运算符进行隐式转换:例如,可以通过一个字符串 + 0 或 - 0 来将该字符串隐式转换为数值类型。
- 将数据转换为布尔值 :
Boolean()
函数可以将其他的数据类型转换为布尔值。代表空、否定的值,例如空字符串、0
、NaN
、NULL
和undefined
转换为false
,其他的值都会被转换为true
。
- 将数据转换为字符串 :
JavaScript中的运算符
JS中的运算符使用和其他语言中的运算符使用大同小异,下面只介绍一些简单的注意事项:
- 浮点数运算精度问题:浮点数的最高精度是17位小数,但是其计算的精确度远不如整数,因此浮点数之间无法进行直接的相等判定。
- 全等的判定 :JS中有
===
和!==
符号进行全等判定,全等是指两个变量的数据类型和值都完全相同。
JavaScript中的流程控制
- if-else if-else语句 :与C++中的
if
系列语句的语法完全相同。 - 三元表达式 :JS中也支持与其他语言中相同的三元表达式
?:
。 - switch语句 :与C++中的
switch
语句的使用语法完全相同,但是进行case
匹配时不是进行相等判定,而是进行全等判定。 - for循环语句 :和C++中的
for
循环语句的语法完全相同。 - while循环语句 :和C++中的
while
循环语句的语法完全相同。 - do-while循环语句 :和C++中的
do-while
循环的语法完全相同。 - break和continue关键字:和其他编程语言中的这两个关键字的作用完全相同。
JavaScript中的数组
数组的创建:
- 使用new关键字创建 :
var 数组名 = new Array();
。 - 使用数组字面量创建数组 :
var 数组名 = [元素1, 元素2, ....];
。
数组中元素的数据类型:数组中的元素可以是不同的数据类型。
数组的长度获取 :数组的length
属性即表示数组中的元素个数。
向数组中添加元素:
- 修改数组的
length
属性来进行扩容(是的,JS中数组的长度属性是可以读写的),多出来的空位置将会被自动赋值undefined
。 - 直接通过索引号来增加数组元素。例如对于一个原本长度为
3
的数组arr
,可以写入arr[3]="test"
,来向数组中添加一个新元素。