type
Post
status
Published
date
Aug 20, 2024
slug
js01
summary
js知识的总结
tags
javascript
category
前端技术
icon
password
一、JavaScript的内外部
1.1 内部JavaScript
- 其格式为:
- 【JavaScript的alert()方法】:弹窗提醒;其格式为:
alert("语句");
- 实例:
代码测试结果如下:

- 【注意】:内部JavaScript可以在页面上的任何位置,而页面也允许在不同位置上放入多段javaScript代码
1.2 外部JavaScript
- 用法在于将原本应写到
<script>和</script>的内容变为在外面另建一个.js文件,并存放在里面
- 建好.js文件后,如果要用,则必须在HTML代码中,声明如下:
<script src="JavaScript 文件地址"></script>- 代码如下:
myFireScript.js
Test1_1.html
代码测试结果如下:

二、JavaScript语法
- 有大小写之分
- 其语法类似于java
- 每一段语句可以有分号(;),也可以没有分号(;)
- 注释可以这样表示:
// 或 /* */
【注意】:注释只能在
<script>和</script>之间的标签或外部js文件使用三、JavaScript变量
3.1 变量声明
- 无论是什么类型内容,都统一使用关键字var加上变量名称进行声明,例如:var a = 2
- 在声明变量的同时可以对其进行初始化,也可以先声明变量,再另行赋值
- 允许一个关键字var同时声明多个变量,同时多个变量也可以是相互不同的类型,也可以是全部相同的类型
- 变量声明var不是必须存在的,也可以直接使用变量名称进行赋值使用,例如:list = “String”
- 当程序遇到未声明的变量时,就像上方的list,会自动使用该名称创建一个变量并继续使用
- 如果声明的变量没有赋值,则alert(变量名称)显示为underfined
3.2 变量的命名规范
- 首位字符必须是字母、下画线、美元符号
- 其他位置可以为下画线、美元符号、数字、字母
- 变量命名方式有Camel标记法(变量为多个单词时,第一个单纯的首字母为小写,其他单词的首字母为大写,如,var myFirseScript)、Pascal标记法(所有单词的首字母大写)、匈牙利类型标记法(在Pascal标记法的基础上,加上一个前缀【i表示整数,s表示字符串】,如,varsMyFirstScript)
3.3 关键字和保留字
- 关键字
break | case | catch | continue | default |
delete | do | else | finally | for |
function | if | in | instanceof | new |
return | switch | this | throw | try |
typeof | var | void | while | with |
- 保留字
abstract | boolean | byte | char | class |
const | debugger | double | enum | export |
extends | final | float | goto | implements |
import | int | interface | long | native |
package | privaste | protected | public | short |
static | super | synchronized | throws | transient |
volatite | ㅤ | ㅤ | ㅤ | ㅤ |
- 都不能作为变量或函数名称
四、JavaScript基本数据类型
- 五种原始类型:Number(数字)、Boolean(布尔值)、String(字符串)、Null(空值)和Undefined(未定义)
- typeof 变量名称:返回该变量名称的类型
- typeof方法的常见返回值
返回值 | 示例 | 解释 |
underfined | var x; alert(x); | 该变量为赋值 |
boolean | var x = true; alert(x); | 该变量为布尔值 |
string | var x = “Hello”; alert(x); | 该变量为字符串 |
number | var x = 3.14; alert(x); | 该变量为数值 |
object | var x = null; alert(x); | 该变量为空值null或对象 |
4.1 Undefined类型
- 当输出的变量从未声明过,或使用关键字var声明过后但并未赋值,alert(变量名称)会显示undefined字样
- 代码如下:
代码测试结果:


4.2 Null类型
- null值表示变量的内容为空,可用于初始化变量或者清空已经赋值的变量
- 示例:
4.3 String类型
- 用于存储文本内容,赋值时,可以用单引号或双引号
- 这里的单引号不是指只能一个字符,它与字符串是相同的意思
- 当文本内容里有双引号,则外面字符串用单引号表示,反之亦然
- 示例:
- JavaScript String对象常见方法
方法名 | 解释 |
charAt() | 返回指定位置上的字符 |
charCodeAt() | 返回指定位置上的字符Unicode编码 |
concat() | 连接字符串 |
indexOf() | 正序检索字符串中指定内容的位置 |
lastIndexOf() | 倒序检索字符串中指定内容的位置 |
match() | 返回匹配正则表达式的所有字符串 |
replace() | 替换字符串中匹配正则表达式的指定内容 |
search() | 返回匹配正则表达式的索引值 |
slice() | 根据指定位置节选字符串片段 |
split() | 把字符串分割成字符串数组 |
substring() | 根据指定位置节选字符串片段 |
toLowerCase() | 将字符串中所有字母都转换为小写 |
toUpperCase() | 将字符串中所有字母都转换为大写 |
4.3.1 字符串长度
- 可以使用 变量名称.length 获取其长度(与java相同)
4.3.2 获取字符串中的单个字符
- 使用charAt()方法获取字符串中的单个字符,使用charCodeAt()方法获取字符串中的单个字符的Unicode编码
- 示例:
4.3.3 连接字符串
- 使用concat()方法将新的字符串内容连接到原始字符串上
- 其格式为:
concat(String s1,String s2,String s3,········,String sn);
- 示例:
4.3.4 查找字符串是否存在
- 使用indexOf()和lastIndexOf()方法来查找原始字符串中是否包含指定的字符串
- 其格式为:【正序】
indexOf(指定的字符串,指定开始索引的位置),【倒序】`lastIndexOf(指定的字符串,指定开始索引的位置)
4.4 Number类型
- Number类型表示数字,其数字可以是32位以内的整数或64位以内的浮点数
4.4.1 科学计数法
- 其格式为:数值e倍数 (倍数可以为负数,其格式含义为数值【整数或浮点数】乘以10的倍数次方)
- 示例:
4.4.2 八进制与十六进制数
- 要运用到八进制、十六进制以及相互转换之间的知识
- Number类型也可以是八进制(以0开头,后面跟的数字只能是0—7中的一个)或十六进制(以0x开头,后面跟的字符只能是0—9或A-F之间的一个)
- 示例:
- 在代码中虽然以八/十六进制赋值,最后输出是以十进制输出
4.4.3 浮点数
- 使用toFixed()方法规定小数点后保留几位数,其格式为:
- 若使用浮点数计算,有时会产生误差
- 代码如下:
代码测试结果:

4.4.4 特殊Number值
- JavaScript中Number类型的特殊值
特殊值 | 解释 |
Infinity | 正无穷大,在JavaScript使用Number.POSITIVE_INFINITY表示 |
-Infinity | 负无穷大,在JavaScript使用Number.NEGATIVE_INFINITY表示 |
NaN | 非数字,在JavaScript使用Number.NaN表示 |
Number.MAX_VALUE | 数值范围允许的最大值,大约等于1.8e308 |
Number.MIN_VALUE | 数值范围允许的最小值,大于等于5e-324 |
- Infinity有正负之分,但如果Number数值超出他的上限或下限,就会返回Infinity
- 示例:
- 当两个变量数值都超出数值范围的大小,但他们各自的实际长度不相同;而由于都超出范围限制,都变为Infinity,所以判定两者是相等的,返回true;
- 示例:
- 使用数字0作为除数不会报错,则分为几种情况:
- 正数 / 0 = Infinity
- 负数 / 0 = -Infinity
- 0 / 0 = NaN(非数字)
- Infinity不可以与其他正常的数字进行计算,返回结果仍是Infinity
- Infinity - Infinity = NaN
4.4.5 NaN
- 表示的是非数字,用于表示数据转换成Number类型失败的情况,从而抛出异常
- isNaN(变量名称):判断数据类型是否为数值的方法,返回值为布尔值
【true时,为无法转换;false,可以转换】
4.4.6 关于Infinity 、-Infinity 、NaN三者的讨论
- Infinity 运算法则
- 正数除以 0 得 Infinity。
- Infinity 加或减任何有限数字都得 Infinity 。Infinity + Infinity 或 Infinity - -Infinity 也得 Infinity 。
- Infinity 乘或除以任何有限正数得 Infinity 。Infinity 乘或除以任何有限负数得 -Infinity 。 Infinity * Infinity 或 Infinity / 0 也得 Infinity 。Infinity * -Infinity 得 -Infinity。
- Infinity - Infinity 得 NaN 。 Infinity / Infinity 得 NaN 。 Infinity * 0 得 NaN 。
- Infinity == Infinity 为真。 Infinity.isNaN() 为假。
- Infinity.isFinite() 为假。 Boolean(Infinity) 为真。
- Infinity 运算法则
- 负数除以 0 得 -Infinity。
- Infinity 加或减任何有限数字都得 -Infinity 。-Infinity + -Infinity 或 -Infinity - Infinity 也得 -Infinity
- Infinity 乘或除以任何有限正数得 -Infinity 。-Infinity 乘或除以任何有限负数得 Infinity 。 -Infinity * Infinity 或 -Infinity / 0 也得 - Infinity 。-Infinity * -Infinity 得 Infinity。
- Infinity - -Infinity 得 NaN 。 -Infinity / -Infinity 得 NaN 。 -Infinity * 0 得 NaN 。
- Infinity == -Infinity 为真。 -Infinity.isNaN() 为假。
- Infinity.isFinite() 为假。 Boolean(-Infinity) 为真。
- NaN 运算法则
- 0 / 0 得 NaN 。上面也有一些得 NaN 的情况。
- NaN 加、减、乘或除以任何数(包括 Infinity 、 -Infinity 和 NaN 本身)得 NaN 。
- 无论变量 x 取何值(包括 undefined 、 null 、 true 、 false 、 Infinity 、 -Infinity 和 NaN 本身),NaN == x 恒为假。NaN.isNaN() 为真。 NaN.isFinite() 为假。 Boolean(NaN) 为假。
4.5 Boolean类型
- 多用于条件判断,返回为布尔值(true或false)
- 总之: 1.特殊值undefined和null变成false. 2.数字0和NaN变成false. 3.空字符串变成false. 4.所有其他值都变成true.
- 另:凡是关于Boolean()、Number()等都是将括号里的元素强制转换为外面声明的类型
五、涉及八进制和十六进制的知识补充


六、JavaScript运算符
- 赋值运算符:=
示例:
var x1 = 9;- 算数运算符的常见用法:
运算符 | 解释 |
+ | 加号,求和,连接字符串 |
- | 减号,求差 |
* | 乘号,求积 |
/ | 除号,求商 |
% | 求余符号 |
++ | 自增加1 |
– | 自减减1 |
- 运算符组合:
运算符组合 | 格式 | 解释 |
+= | x+=y | x=x+y |
-= | x-=y | x=x-y |
*= | x*=y | x=x*y |
/= | x/=y | x=x/y |
%= | x%=y | x=x%y |
- 逻辑运算符有三种类型:NOT(逻辑非)、AND(逻辑与)、OR(逻辑或)
- 逻辑运算符分为:!(逻辑非,表示对结果的对立面)、&&(逻辑与,表示并列关系)、||(逻辑或,表示二选一)
- 【注意:】这里与Java不同的是,JavaScript自带有一个抽象方法ToBoolean,可以提前将运算条件转换为布尔值,之后在进行逻辑运算符判断;
- ToBoolean的具体转换规则如下:
值 | 示例 | 转换结果 |
布尔值true | var x = true; | true |
布尔值false | var x = false; | false |
null | var x = null; | false |
underfined | var x = underfined; | false |
非空字符串 | var x = “Hello”; | true |
空字符串 | var x = ““; | false |
数字0 | var x = 0; | false |
NaN | var x = NaN; | false |
除0和NaN以外的其他数字 | var x = 99; | true |
对象 | var student = new Object(); | true |
- 逻辑与特殊情况:
运算数类型 | 示例 | 返回值 |
一个是对象,一个是布尔值 | var student = new Object(); var result = student && true; | 返回对象类型,即student |
两个都是对象 | var student1 = new Object(); var student2 = new Object(); var result = student1 && student2; | 返回第二个对象,即student2 |
一个是空值null,一个是布尔值 | var x = null; var result = x && true; | null |
存在NaN | var x = NaN; var result = x && true; | NaN |
存在未赋值undefined | var x; var result = x && true; | underfined |
但有一点:若条件1为假,返回值都是假的;【逻辑或(||)亦是如此,只要条件1为真,返回值都为真的】
- 逻辑或特殊情况:
运算数类型 | 示例 | 返回值 |
条件1位false,条件2为对象 | var student = new Object(); var result = flase ||student; | 返回对象类型,即student |
两个都是对象 | var student1 = new Object(); var student2 = new Object(); var result = student1 ||student2; | 返回第一个对象,即student1 |
条件1是false,条件2为空值null | var x = null; var result = flase ||x; | null |
条件1是false,条件2为NaN | var x = NaN; var result = false ||x; | NaN |
条件1为false,条件2为underfined | var x;var result = false ||x; | underfined |
- 关系运算符分为三种比较方式:
数字之间的比较(和正常做数学题差不多)、字符串之间的比较(根据位数,判断该位数上的字母那个unicode的数字大或小;另,再讲个较为特殊一点的:一个是“9”,另一个是“10”,则按位数进行比较,切勿当做数学题做,这里9和1是同一位数的,所以按照数学正常比大小顺序,9>1,则“9”>10)、字符串与数字之间的比较(先将字符串转为数字,再进行比较;若无法转为数字,则返回false)
另:附加两个方法:toLowerCase()【将所有字母转换为小写形式】、toUpperCase()【将所有字母转换为大写形式】
- 相等性运算符是先将其他非数字类型的转换为数字类型,在进行相等判断;
- 数据类型转换规则表
数据类型 | 示例 | 转换结果 |
布尔值(真) | true | 1 |
布尔值(假) | false | 0 |
字符串(纯数字类型) | “99” | 99 |
字符串(非纯数字类型) | “99hello123” | NaN |
空值 | null | null |
未定义的值 | undefined | undefined |
- 相等性特殊情况规则(数据类型转换后仍不是数字类型的特殊情况)
运算数类型 | 示例 | 返回值 |
其中一个为null,另一个为undefined | var x1 = null; var x2; var result = (x1==x2); | true |
两个值均为null | var x1 = null; var x2 = null; var result = (x1==x2) | true |
两个值均为undefined | var x1; var x2; var result = (x1==x2); | true |
其中一个为数字,另一个为NaN | var x1 = 5; vae x2 = parseInt(“a”); var result = (x1==x2); | false |
两个值均为NaN | var x1 = parseInt(“a”); var x2 = parseInt(“b”); var result = (x1==x2); | false |
那为什么两个值为NaN时,返回为false?
因为NaN是不可预测的数字,所以当两个值为NaN时,不知道哪个是大,哪个是小,因此返回false;
七、JavaScript条件语句
- if-else if-else语句与java用法相同,这里不阐述;
- switch-case-default语句与java用法相同,这里也不阐述;
八、JavaScript函数
- 函数的格式如下:
- javascript的函数返回形式与java不同,它不需要在函数名前特别声明该返回什么类型,也不要加什么void,只需要按正常的在函数内部内容直接返回return加需要返回的内容就行了,没有返回值就不用写吧return;
九、文档对象模型
9.1 含义
- HTML的应用程序接口
- 简称DOM
- 将整个HTML页面看作由各种节点层级构成的结构
9.2 在javascript中查找HTML元素有三种方法
- HTML元素的id名称查找
- 其格式为
document.getElementById("id名称"); - 如果未找到id名称,则会返回null;如果找到,则以对象形式返回;
//根据id名称获取元素(id为test)对象var test = document.getElementId("test");//获取元素内容var result = test.innerHTML;
- HTML元素的标签名称查找
- 其格式为
document.getElementsByTagName("标签名称"); - 注意这里的Elements是复数形式,其原因在于可能存在多个元素符合要求;这时若找到标签名称,则会以数组的形式返回;而找不到,则返回null;
var test = document.getElementsByTagName("p");var result = p[0].innerHTML;
- HTML元素的类名称查找
- 其格式为
document.getElementsByClassName("类名称"); - 注意这里的Elements是复数形式,其原因在于可能存在多个元素符合要求;这时若找到标签名称,则会以数组的形式返回;而找不到,则返回null;
var test = document.getElementsByClassName("coral");var result = test[0].innerHTML;
9.3 DOM HTML
9.3.1 使用document.write()方法可以想页面动态输出内容
示例:
9.3.2 innerHTML的用法
- innerHTML可以实现用于获取元素内容,也可用于修改元素内容。
- 其格式为:
- 获取:
- 修改内容:
- 修改元素属性:
9.4 DOM CSS
- 其格式为:
9.5 DOM事件
- 含义:可以再HTML页面状态发生变化时执行代码
- 示例:
<button onclick = "alert('hi')">点我会弹出对话框</button>button>- HTML常用事件属性
事件属性 | 解释 |
onabort | 图像加载过程被中断 |
onblur | 元素失去焦点 |
onchange | 域的内容被改变 |
onclick | 元素被鼠标左键点击 |
ondbclick | 元素被鼠标左键双击 |
onerror | 加载文档或图像时发送错误 |
onfocus | 元素获得焦点 |
onkeydown | 键盘按键被按下 |
onkeypress | 键盘按键被按下并松开 |
onkeyup | 键盘按键被松开 |
onload | 页面或图像被加载完成 |
onmousedown | 鼠标按钮被按下 |
onmousemove | 鼠标被移动 |
onmouseout | 鼠标从当前元素上移动 |
onmouseover | 鼠标移动到当前元素上 |
onmouseup | 鼠标按键被松开 |
onreset | 重置按钮被点开 |
onresize | 窗口或框架的大小被更改 |
onselect | 文本被选中 |
onsubmit | 提交按钮被点击 |
onunload | 退出页面 |
9.6 DOM节点
9.6.1 添加HTML元素
- 两个步骤:
- 创建新的元素,其格式为:
document.createElement("元素标签名"); - 将其追加到一个已存在的元素中,其格式为:
已存在的元素对象.appendChild(需要添加的新元素对象);【已存在的元素对象可由document对象的getElementById(“id名称”)获取】 - 其总的格式为:
9.6.2 删除HTML元素
- 两个步骤:
- 使用document对象的getElementById(“id名称”)方法获取该元素;
- 使用removeChild()方法将其从父元素中删除
- 另:若父元素有明确的的id名称,可以使用getElementById()方法获取
- 另:若父元素没有明确的id名称,则可以使用子元素的parentNode属性获取其父元素对象
示例:
示例:
- 代码如下:
代码测试结果:

- 作者:清弦子
- 链接:https://tangly1024.com/%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF/js01
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
.jpg?table=collection&id=aeb9995f-c21f-83d9-b9b7-07efa597272a&t=aeb9995f-c21f-83d9-b9b7-07efa597272a)