人人都会AI编程

附录 A JavaScript 常用 API 速查表

更新时间:2026-07-11

本速查表聚焦于日常开发中使用频率最高的原生 API,按功能模块分类,提供最精简的用法速览。更多详细说明与进阶用法请参阅正文对应章节。


A.1 数组(Array)

| 方法 | 简要说明 | 原数组是否改变 | 示例 |
|---|---|---|---|
| push(...items) | 末尾添加元素,返回新长度 | 是 | arr.push(4, 5) |
| pop() | 移除末尾元素,返回该元素 | 是 | arr.pop() |
| unshift(...items) | 开头添加元素,返回新长度 | 是 | arr.unshift(0) |
| shift() | 移除开头元素,返回该元素 | 是 | arr.shift() |
| splice(start, deleteCount, ...items) | 删除 / 插入 / 替换元素 | 是 | arr.splice(1, 2, 'a', 'b') |
| slice(start, end) | 截取子数组(浅拷贝) | 否 | arr.slice(1, 3) |
| concat(...arrays) | 合并多个数组(浅拷贝) | 否 | arr.concat([4, 5]) |
| join(separator) | 用分隔符连接成字符串 | 否 | arr.join(', ') |
| indexOf(item, fromIndex) | 查找元素索引,未找到返回 -1 | 否 | arr.indexOf(2) |
| includes(item, fromIndex) | 是否包含指定元素,返回布尔值 | 否 | arr.includes(2) |
| find(callback) | 查找第一个符合条件的元素 | 否 | arr.find(v => v > 3) |
| findIndex(callback) | 查找第一个符合条件的索引 | 否 | arr.findIndex(v => v > 3) |
| filter(callback) | 筛选出符合条件的所有元素(新数组) | 否 | arr.filter(v => v > 3) |
| map(callback) | 对每个元素执行映射,返回新数组 | 否 | arr.map(v => v * 2) |
| reduce(callback, initial) | 累加器,将数组合并为单个值 | 否 | arr.reduce((acc, v) => acc + v, 0) |
| forEach(callback) | 遍历每个元素(无返回值) | 否 | arr.forEach(v => console.log(v)) |
| some(callback) | 是否至少有一个元素符合条件 | 否 | arr.some(v => v > 0) |
| every(callback) | 是否所有元素都符合条件 | 否 | arr.every(v => v > 0) |
| sort(compareFn) | 原地排序(默认按字符串排序) | 是 | arr.sort((a, b) => a - b) |
| reverse() | 原地反转 | 是 | arr.reverse() |
| flat(depth) | 扁平化深层嵌套数组 | 否 | [1, [2, 3]].flat(1) |
| flatMap(callback) | map 后立即 flat(1) | 否 | arr.flatMap(v => [v, v * 2]) |
| Array.from(arrayLike) | 将类数组或可迭代对象转为数组 | — | Array.from('hello') |
| Array.of(...items) | 用值创建数组(避免单数字构造歧义) | — | Array.of(3) |


A.2 字符串(String)

| 方法 | 简要说明 | 示例 |
|---|---|---|
| charAt(index) | 获取指定位置字符 | str.charAt(0) |
| charCodeAt(index) | 获取指定位置字符的 Unicode 码点 | str.charCodeAt(0) |
| concat(...strings) | 拼接字符串(通常直接用 +) | str.concat(' World') |
| includes(search, position) | 是否包含子串 | str.includes('abc') |
| indexOf(search, position) | 查找子串第一次出现的位置 | str.indexOf('a') |
| lastIndexOf(search, position) | 查找子串最后一次出现的位置 | str.lastIndexOf('a') |
| startsWith(search, position) | 是否以某子串开头 | str.startsWith('He') |
| endsWith(search, length) | 是否以某子串结尾 | str.endsWith('lo') |
| slice(start, end) | 提取子串(支持负索引) | str.slice(1, 4) |
| substring(start, end) | 提取子串(不接受负索引) | str.substring(1, 4) |
| substr(start, length) | 提取指定长度子串(已废弃,不建议使用) | str.substr(1, 3) |
| toLowerCase() | 转全小写 | str.toLowerCase() |
| toUpperCase() | 转全大写 | str.toUpperCase() |
| trim() | 去除两端空白字符 | str.trim() |
| trimStart() / trimEnd() | 去除开头 / 结尾空白 | str.trimStart() |
| replace(search, replacement) | 替换第一个匹配项 | str.replace('foo', 'bar') |
| replaceAll(search, replacement) | 替换所有匹配项 | str.replaceAll('foo', 'bar') |
| split(separator, limit) | 用分隔符拆分为数组 | str.split(',') |
| padStart(targetLength, padString) | 开头补全至指定长度 | '5'.padStart(2, '0') |
| padEnd(targetLength, padString) | 末尾补全至指定长度 | '5'.padEnd(2, '0') |
| repeat(count) | 重复字符串指定次数 | 'ab'.repeat(3) |


A.3 数字与数学(Number / Math)

| 方法 / 属性 | 简要说明 | 示例 |
|---|---|---|
| Number.isFinite(value) | 是否为有限数(不转换类型) | Number.isFinite(1 / 0) → false |
| Number.isNaN(value) | 是否为 NaN(不转换类型) | Number.isNaN(NaN) → true |
| Number.isInteger(value) | 是否为整数 | Number.isInteger(3.0) → true |
| Number.parseInt(string, radix) | 解析整数(全局 parseInt 建议通过 Number 调用) | Number.parseInt('10', 2) |
| Number.parseFloat(string) | 解析浮点数 | Number.parseFloat('3.14') |
| Number.MAX_SAFE_INTEGER | 最大安全整数 2^53 - 1 | — |
| Number.MIN_SAFE_INTEGER | 最小安全整数 | — |
| Number.EPSILON | 极小差值,用于浮点数比较 | — |
| Math.round(num) | 四舍五入取整 | Math.round(4.6) → 5 |
| Math.ceil(num) | 向上取整 | Math.ceil(4.1) → 5 |
| Math.floor(num) | 向下取整 | Math.floor(4.9) → 4 |
| Math.random() | 返回 [0, 1) 随机浮点数 | Math.random() |
| Math.max(...nums) | 返回最大数值 | Math.max(1, 2, 3) |
| Math.min(...nums) | 返回最小数值 | Math.min(1, 2, 3) |
| Math.abs(num) | 绝对值 | Math.abs(-5) → 5 |
| Math.pow(base, exp) | 幂运算(也可用 base ** exp) | Math.pow(2, 3) → 8 |
| Math.sqrt(num) | 平方根 | Math.sqrt(9) → 3 |
| Math.PI | 圆周率 π | — |


A.4 对象(Object)

| 方法 | 简要说明 | 示例 |
|---|---|---|
| Object.keys(obj) | 返回自有可枚举属性名组成的数组 | Object.keys({a:1, b:2}) |
| Object.values(obj) | 返回自有可枚举属性值组成的数组 | Object.values({a:1, b:2}) |
| Object.entries(obj) | 返回 [key, value] 数组对 | Object.entries({a:1}) |
| Object.assign(target, ...sources) | 浅拷贝合并对象(目标对象会被修改) | Object.assign({}, a, b) |
| Object.freeze(obj) | 冻结对象(无法增删改属性) | Object.freeze(obj) |
| Object.seal(obj) | 密封对象(可改现有属性值,不可增删属性) | Object.seal(obj) |
| Object.create(proto, descriptors) | 以指定原型创建新对象 | Object.create(null) |
| Object.defineProperty(obj, prop, descriptor) | 精准添加或修改属性,可设置数据/访问器描述符 | — |
| Object.defineProperties(obj, props) | 一次性定义多个属性 | — |
| Object.hasOwn(obj, prop) | 是否拥有自有属性(推荐代替 hasOwnProperty) | Object.hasOwn(obj, 'name') |
| Object.fromEntries(iterable) | 将键值对列表转换为对象 | Object.fromEntries([['a',1]]) |


A.5 函数(Function)

| 方法 | 简要说明 | 示例 |
|---|---|---|
| fn.call(thisArg, ...args) | 显式绑定 this 并立即执行 | greet.call(user, 'hi') |
| fn.apply(thisArg, argsArray) | 显式绑定 this 并立即执行,参数为数组 | greet.apply(user, ['hi']) |
| fn.bind(thisArg, ...args) | 创建绑定 this 和部分参数的新函数 | const bound = fn.bind(obj) |
| Function.prototype.name | 函数名称 | function foo(){}foo.name |


A.6 日期与时间(Date)

| 方法 | 简要说明 |
|---|---|
| new Date() | 创建表示当前时间的 Date 对象 |
| new Date(timestamp) | 按毫秒时间戳创建 |
| new Date(dateString) | 按日期字符串创建(注意时区) |
| new Date(y, m, d, h, min, s, ms) | 按各分量创建,月份从 0 开始 |
| date.getTime() | 获取时间戳(1970-01-01 至今的毫秒数) |
| date.getFullYear() | 获取四位年份 |
| date.getMonth() | 获取月份(0-11) |
| date.getDate() | 获取日期(1-31) |
| date.getDay() | 获取星期几(0=周日,6=周六) |
| date.getHours() / getMinutes() / getSeconds() | 获取时、分、秒 |
| date.toISOString() | 返回 ISO 8601 格式字符串 |
| date.toLocaleString() | 返回本地化日期时间字符串 |
| Date.now() | 返回当前时间戳(静态方法,性能更好) |
| Date.parse(dateString) | 解析日期字符串,返回时间戳(不可靠,慎用) |


A.7 Promise 与异步工具

| 方法 | 简要说明 |
|---|---|
| new Promise(executor) | 创建 Promise,executor 函数接收 resolve, reject |
| promise.then(onFulfilled, onRejected) | 添加成功/失败回调 |
| promise.catch(onRejected) | 添加失败回调 |
| promise.finally(onFinally) | 添加最终执行回调(无论成功失败) |
| Promise.resolve(value) | 返回一个已成功的 Promise |
| Promise.reject(reason) | 返回一个已失败的 Promise |
| Promise.all(iterable) | 所有 Promise 成功则成功,任一失败则失败 |
| Promise.allSettled(iterable) | 等待所有 Promise 结束,返回每个结果的状态和值 |
| Promise.race(iterable) | 第一个完成的 Promise 决定结果 |
| Promise.any(iterable) | 第一个成功的 Promise 决定结果,全失败才失败 |


A.8 定时器

| 方法 | 简要说明 |
|---|---|
| setTimeout(callback, delay) | 延迟 delay 毫秒后执行一次 callback,返回标识 ID |
| setInterval(callback, interval) | 每隔 interval 毫秒重复执行 callback,返回标识 ID |
| clearTimeout(id) | 取消 setTimeout |
| clearInterval(id) | 取消 setInterval |
| requestAnimationFrame(callback) | 在下一帧渲染前执行回调,用于动画,返回请求 ID |
| cancelAnimationFrame(id) | 取消 requestAnimationFrame |


A.9 JSON

| 方法 | 简要说明 |
|---|---|
| JSON.stringify(value, replacer, space) | 将 JavaScript 值序列化为 JSON 字符串 |
| JSON.parse(text, reviver) | 将 JSON 字符串解析为 JavaScript 值 |

注意事项:

  • JSON.stringify 会忽略 undefinedFunctionSymbol,并在数组中将其转换为 null
  • 深拷贝对象的简单方式:JSON.parse(JSON.stringify(obj)),但无法处理函数、循环引用、正则等特殊情况。

A.10 控制台与调试(Console)

| 方法 | 用途 |
|---|---|
| console.log(...data) | 一般日志输出 |
| console.warn(...data) | 警告信息(高亮黄色) |
| console.error(...data) | 错误信息(高亮红色) |
| console.table(data) | 以表格形式打印对象数组 |
| console.time(label) / console.timeEnd(label) | 记录代码执行耗时 |
| console.trace() | 打印调用堆栈 |
| console.dir(object) | 以树形结构打印对象 |


A.11 其他常用全局 API

| 方法 | 简要说明 |
|---|---|
| parseInt(string, radix) | 解析整数字符串(建议通过 Number.parseInt) |
| parseFloat(string) | 解析浮点数字符串 |
| isNaN(value) | 判断是否为 NaN(会进行类型转换,存在奇怪行为,不推荐) |
| isFinite(value) | 判断是否为有限数(会进行类型转换) |
| encodeURIComponent(str) | 将字符串编码为 URI 组件,常用于拼接查询字符串 |
| decodeURIComponent(str) | 解码通过 encodeURIComponent 生成的字符串 |
| encodeURI(str) | 对整个 URI 编码(不会编码 :/?#[]@ 等保留字符) |
| decodeURI(str) | 解码整个 URI |


速查表仅展示最核心用法。各 API 的细节边界、兼容性注意、底层原理及手写实现请参照正文相关章节。日常开发建议多查阅 MDN 文档,以获得最权威、完整的说明。