抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

输入输出语句

  • prompt(info)
  • alert(msg)
  • console.log(msg)

undefined与null

  • undefined表示没有赋值,未定义数据类型
  • null表示值为空,空数据类型。如果一个变量里面确定存放的是对象,如果还没准备好对象,可以放一个null

类型转换

隐式转换

  • +号两边只要有一个是字符串,都会把另外一个转成字符串

  • -,*,/,%:字符串转数字型后计算

  • +作为正号解析可以转换成数字型

显示转换

  • +|Number()|parseInt()|parseFloat():转换为数字型

数组

方法/属性 作用
arr.length 获取数组长度
arr.at() 接收一个整数值并返回该索引对应的元素,允许正数和负数。负整数从数组中的最后一个元素开始倒数。
arr.concat() 合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。可以用来拷贝数组
arr.every() 测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。
arr.fill(element,i,j) 用一个固定值填充一个数组中从起始索引(默认为 0)到终止索引(默认为 array.length)内的全部元素。它返回修改后的数组。
arr.filter() 创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。
arr.find() 返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
arr.findIndex() 返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回 -1。
arr.findLast() 反向迭代数组,并返回满足提供的测试函数的第一个元素的值。如果没有找到对应元素,则返回 undefined。
arr.findLastIndex() 反向迭代数组,并返回满足所提供的测试函数的第一个元素的索引。若没有找到对应元素,则返回 -1。
arr.flat(Infinity) 创建一个新的数组,并根据指定深度递归地将所有子数组元素拼接到新的数组中。
arr.forEach() 对数组的每个元素执行一次给定的函数。
arr.includes() 判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false
arr.indexOf() 返回数组中第一次出现给定元素的下标,如果不存在则返回 -1。
arr.join() 将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串,用逗号或指定的分隔符字符串分隔。
arr.findLastIndexOf(element,fromIndex) 返回数组中给定元素最后一次出现的索引,如果不存在则返回 -1。该方法从 fromIndex 开始向前搜索数组。
arr.map() 创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
arr.pop() 数组中删除最后一个元素,并返回该元素的值。
arr.push() 将指定的元素添加到数组的末尾,并返回新的数组长度。
arr.reduce((pre,current)=>func,initial) 对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
arr.reverse() 就地反转数组中的元素,并返回同一数组的引用。
arr.toReversed() 不改变原始数组的情况下反转数组中的元素。
arr.shift() 从数组中删除第一个元素,并返回该元素的值。
arr.slice(start,end) 返回一个新的数组对象,这一对象是一个由 start 和 end 决定的原数组的浅拷贝(包括 start,不包括 end),其中 start 和 end 代表了数组元素的索引。原始数组不会被改变。
arr.some() 测试数组中是否至少有一个元素通过了由提供的函数实现的测试。如果在数组中找到一个元素使得提供的函数返回 true,则返回 true;否则返回 false
arr.sort((a,b)=>a-b) 就地对数组的元素进行排序,并返回对相同数组的引用。默认排序是将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。
arr.toSorted() 对数组的元素进行排序,不改变原数组,并返回新的数组。
arr.splice(splice(start, deleteCount, item1,……)) 就地移除或者替换已存在的元素和/或添加新的元素。
arr.toSpliced() 创建一个删除和/或替换部分内容而不改变原数组的新数组。
arr.unshift() 将指定元素添加到数组的开头,并返回数组的新长度。

对象

属性/方法 描述
Object.keys(obj) 获得所有的属性名(数组)
Object.values(obj) 获得所有的属性值(数组)
Object.assign(copyObj,obj) 拷贝对象(浅拷贝),常用以配置对象合并
Object.entries(obj) 返回对象的所有可枚举属性[key,value]数组
for(let key in obj) obj[key] 遍历对象
Math.random() 生成0-1之间的随机数
Math.ceil() 向上取整
Math.floor() 向下取整
Math.max() 找最大值
Math.min() 找最小值
Math.pow() 幂运算
Math.abs() 绝对值
Math.sign() 获取符号
date.getfullYear() 以四位数字返回年份。
date.getMonth() 返回月份 (0 ~ 11)。
date.getDate() 返回一个月中的某一天 (1 ~ 31)。
date.getDay() 返回一周中的某一天 (0 ~ 6)。
date.getHours() 返回小时 (0 ~ 23)。
date.getMinutes() 返回分钟 (0 ~ 59)。
date.getSeconds() 返回秒数 (0 ~ 59)。
date.getTime()|+new Date()|Date.now() 获取时间戳
str.length 字符串的长度
str.concat(s) 连接两个或更多字符串,并返回新的字符串
str.endsWith(s[,检测位置索引号]) 判断当前字符串是否是以指定的子字符串结尾的(区分大小写)
str.indexOf(s) 返回某个指定的字符串值在字符串中首次出现的位置
str.lastIndexOf(s) 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
str.includes(s[,检测位置索引号]) 查找字符串中是否包含指定的子字符串
str.match(reg) 查找找到一个或多个正则表达式的匹配
str.split(‘分隔符’) 把字符串分割为字符串数组
str.substring(from,to) 提取字符串中两个指定的索引号[form,to)之间的字符
str.startsWith(s[,检测位置索引号]) 查看字符串是否以指定的子字符串开头
str.toLowerCase() 把字符串转换为小写
str.toUpperCase() 把字符串转换为大写
str.substr(startIndex,n) 从起始索引号提取字符串中指定数目的字符。
str.replace() 在字符串中查找匹配的子串,并替换与正则表达式匹配的子串
str.replaceAll() 在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串
str.search() 查找与正则表达式相匹配的值,返回匹配的起始位置
str.trim() 去除字符串两边的空白
Number.EPSILON JavaScript能表示的最小精度数
Number.isFinite() 检测是否为有限数
Number.isNaN() 检测是否为NaN
Number.parseInt() 转化为整数
Number.parseFloat() 转化为浮点数
Number.isInteger() 判断是否为整数

正则表达式

定义正则表达式

1
const reg = /表达式/修饰符

匹配字符

字符 描述
. 匹配任意字符,除了\n、\r
abc 匹配对应的字符串
[abc] 查找方括号之间的任何字符
[^abc] 匹配除了括号内的字符以外的任意一个字符
[0-9] 查找任何从 0 至 9 的数字
(x|y) 查找任何以|分隔的选项,匹配不同模式
\d 查找数字
\s 查找空白字符,等于[\t\r\n\v\f]
\w 匹配数字、字母、下划线,等价于[0-9a-zA-Z_]
\D \S \W 与对应的小写形式相反
\b 匹配单词边界
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符
^ 匹配字符串的开头
$ 匹配字符串的结尾

量词

  • *:匹配前面的模式零次或一次或多次。
  • +:匹配前面的模式一次或多次。
  • ?:匹配前面的模式零次或一次。
  • {n}:匹配前面的模式恰好 n 次。
  • {n,}:匹配前面的模式至少 n 次。
  • {n,m}:匹配前面的模式至少 n 次且不超过 m 次。

分组和捕获

  • ( ):用于分组和捕获子表达式。
  • (?: ):用于分组但不捕获子表达式。

修饰符

  • i:执行对大小写不敏感的匹配。

  • g:全局匹配

  • m:多行匹配

匹配

1
2
3
4
5
6
const reg = /she/
string str = 'sherlock-holmes'
reg.test(str)//返回true|false
reg.exec(str)//返回数组|null
str.replace(reg,'substitute')
str.search(reg)
  • test() 方法用于检测一个字符串是否匹配某个模式。

  • exec() 方法用于检索字符串中的正则表达式的匹配。

  • search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

  • replace() 方法用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。

DOM对象

document对象

属性/方法 描述
document.querySelector() 返回文档中匹配指定的CSS选择器的第一元素
document.querySelectorAll() 返回文档中匹配的CSS选择器的所有元素节点列表
document.write() 向文档写 HTML 表达式 或 JavaScript 代码
document.createElement() 创建元素节点。
document.body 返回文档的body元素
document.documentElement 返回文档的根节点
document.title 返回当前文档的标题

DOM元素对象

属性/方法 描述
element.innerHTML 设置或者返回元素的内容(解析标签)。
element.innerText 设置或者返回元素的文字内容(不解析标签)。
element.style 设置或返回元素的样式属性。
element.src|title|value|type 设置或返回元素的源|标题|值|类型。
element.className 设置或返回元素的类名。
element.classList.add()|remove()|toggle() 追加类名|移除类名|切换类名
element.dataset 获取data-属性
element.addEventListener(‘事件类型’,Func,是否使用捕获机制)|on事件 添加事件
element.removeEventListener(‘事件类型’,Func,是否使用捕获机制) 解绑事件(匿名函数无法解绑)
element.parentNode 返回元素的父节点
element.children 返回元素的子元素的集合
element.nextElementSibling 返回元素的下一个兄弟节点
element.previousElementSibling 返回元素的上一个兄弟节点
element.appendChild(ele) 为元素添加一个新的子元素
element.insertBefore(insertEle,ele) 现有的子元素之前插入一个新的子元素
element.cloneNode(false|true) 克隆某个元素,参数为true时,同时克隆子元素
element.removeChild(ele) 删除一个子元素

事件对象

属性/方法 描述
e.target 返回触发此事件的元素(事件的目标节点)。
e.type 返回当前 Event 对象表示的事件的名称。
e.currentTarget 返回其事件监听器触发该事件的元素。
e.timeStamp 返回事件生成的日期和时间。
e.preventDefault() 通知浏览器不要执行与事件关联的默认动作。
e.stopPropagation() 阻止冒泡。

BOM对象

  • window对象是一个全局对象,也可以说是JavaScript中的顶级对象
  • document、alert()、console都是window的属性和方法
  • 所有通过var定义在全局作用域中的变量、函数都会变成window对象的属性和方法
  • window对象下的属性和方法调用时可以省略window

location对象

属性/方法 描述
location.href 返回完整的URL,可以用来跳转页面
location.hostname 返回URL的主机名
location.port 返回一个URL服务器使用的端口号
location.protocol 返回一个URL协议
location.search 返回一个URL的查询部分(?后部分)
location.hash 返回一个URL的锚部分(#后部分)
location.reload(true) 刷新页面
1
2
3
4
5
6
7
8
!(function(){
const userAgent = navigator.userAgent
const android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)
const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/)
if(android||iphone){
location.href = 'http://m.itcast.cn'
}
})()

history对象

属性方法 作用
history.length 返回历史列表中的网址数
history.back() 加载 history 列表中的前一个 URL
history.forword() 加载 history 列表中的下一个 URL
history.go(n) 加载 history 列表中的某个具体页面,正数前进、负数后退

localStorage对象

属性/方法 描述
localStorage.length 返回存储对象中包含多少条数据
localStorage.key(n) 返回存储对象中第 n 个键的名称
localStorage.getItem(keyname) 返回指定键的值
localStorage.setItem(keyname,value) 添加键和值,如果对应的值存在,则更新该键对应的值
localStorage.removeItem(keyname) 移除键
localStorage.clear() 清除存储对象中所有的键
  • JSON.stringfy(复杂数据类型)
  • JSON.parse(json数据)

定时器

  • const timer = setInterval(function(){},ms)
  • clearInterval(timer)
  • const timer = setTimeout(Func,ms)
  • clearTimeout(timer)

Base64转码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<input type="file" id="fileInput" />
<button id="downloadButton" disabled>Download Decoded File</button>

<script>
let base64String = '';

// 1. 将文件转换为Base64
document.getElementById('fileInput').addEventListener('change', async (event) => {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
// 将 FileReader 包装为 Promise
const readFile = () => {
return new Promise((resolve, reject) => {
reader.onloadstart = function (e) {
console.log('开始上传');
};

reader.onload = function (e) {
base64String = e.target.result.split(',')[1]; // 获取纯Base64部分
console.log('Base64:', base64String);
resolve(); // 文件读取完成,解析 Promise
};

reader.onerror = function (e) {
reject(new Error('文件读取失败')); // 文件读取失败,拒绝 Promise
};

reader.readAsDataURL(file); // 开始读取文件
});
};

try {
await readFile(); // 等待文件读取完成
console.log('加载完毕');
document.getElementById('downloadButton').disabled = false; // 启用下载按钮
} catch (error) {
console.error('文件读取失败:', error);
}
}
});

// 2. 将Base64解码为文件并下载
document.getElementById('downloadButton').addEventListener('click', function() {
if (!base64String) {
console.error('No Base64 data available.');
return;
}

// 将Base64字符串解码为二进制数据
const binaryString = atob(base64String);
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}

// 创建Blob对象
const blob = new Blob([bytes], { type: 'application/octet-stream' });

// 创建下载链接
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'decoded_file'; // 设置下载文件名
document.body.appendChild(a);
a.click();

// 清理
document.body.removeChild(a);
URL.revokeObjectURL(url);
});
</script>

评论