JavaScript 词条(304 条)
常用内置
console.log把内容输出到控制台,像在黑板上写下你想看的值,是最常用的调试手段。Math.floor返回小于或等于参数的最大整数:把数轴上的点往负无穷方向推到最近的整数。Math.ceil返回大于或等于参数的最小整数:把数轴上的点往正无穷方向推到最近的整数。Math.round返回离参数最近的整数;小数部分正好是 0.5 时往正无穷方向进位。Math.abs返回一个数的绝对值,即去掉正负号后的非负数。Math.max返回一组数值参数里的最大值;一个参数都不给则返回 -Infinity。Math.min返回一组数值参数里的最小值;一个参数都不给则返回 Infinity。Math.random生成一个大于等于 0 且小于 1 的伪随机浮点数,每次调用结果通常不同。parseInt把字符串按指定进制解析成整数:从开头读数字,遇到非数字字符就停。parseFloat把字符串解析成浮点数:从开头读数字,遇到非数字字符就停。Number构造函数/转换函数,把任意值转成 number 类型;字符串必须全是合法数字,否则返回 NaN。String构造函数/转换函数,把任意值转成字符串类型。Boolean构造函数/转换函数,把任意值转成布尔类型;只有几个“假值”会转成 false。isNaN全局函数,判断一个值在转成数字后是不是 NaN。Array.isArray静态方法,判断一个值是不是数组,比 typeof 更可靠。Object.keys静态方法,取出对象自身的可枚举属性名(不含原型链继承来的),收集成字符串数组。Object.values静态方法,取出对象自身的可枚举属性值(不含原型链继承来的),收集成数组。JSON.parse把符合 JSON 格式的字符串解析成对应的 JS 值。JSON.stringify把 JS 值序列化成 JSON 字符串。setTimeout在指定的毫秒数后执行一次回调函数,返回一个定时器编号。setInterval每隔指定的毫秒数重复执行一次回调函数,返回一个定时器编号。Promise表示一个异步操作最终可能成功或失败的对象,像餐厅给你的取餐小票:现在没拿到菜,但承诺以后会给你结果。requireNode.js CommonJS 模块函数,用于加载并返回指定模块的导出内容;浏览器环境会 ReferenceError。moduleNode.js CommonJS 模块对象,module.exports 是该模块对外暴露的内容;浏览器环境会 ReferenceError。exportsNode.js CommonJS 中 module.exports 的引用别名,用来给模块添加导出;浏览器环境会 ReferenceError。module.exportsNode.js CommonJS 模块的完整导出对象,require 该文件时返回的就是它;浏览器环境会 ReferenceError。console控制台对象,提供 log、warn、error 等调试输出方法。Math数学工具对象,提供取整、随机数、三角函数等静态方法。JSON内置对象,提供 JSON 字符串与 JS 值之间的互相转换方法。Object所有对象原型链顶端的构造函数,也提供 keys、values 等静态工具方法。Array数组构造函数,数组实例继承其原型上的方法,也提供 isArray 等静态方法。Date日期时间构造函数,new Date() 返回一个表示当前时刻的对象。Error错误对象的构造函数,用于创建可抛出的异常信息。TypeErrorError 的子类,表示值的类型不符合预期,如把非函数当函数调用。Map键值对集合,键可以是任意类型,按插入顺序迭代。Set值的集合,自动去重,同一值只保留一份。RegExp正则表达式对象,用于字符串的模式匹配、查找和替换。Symbol创建唯一原始值的构造函数,常用作对象属性的键以避免命名冲突。Infinity表示正无穷大的数值常量;负数除以 0 会得到 -Infinity。window浏览器环境下的全局对象,包含 DOM、BOM 和全局变量。document当前窗口加载的 HTML 文档对象,是操作 DOM 的入口。clearTimeout取消由 setTimeout 创建的延时调用。clearInterval取消由 setInterval 创建的循环调用。NaN全局属性,表示“不是一个数字”的特殊 number 值。globalThis全局对象的标准名称,浏览器中指向 window,Node.js 中指向 global。fetch用于发起网络请求并返回 Promise 的全局函数。alert浏览器全局函数,弹出一个带确定按钮的信息提示框。prompt浏览器全局函数,弹出带输入框的对话框,返回用户输入或 null。confirm浏览器全局函数,弹出带“确定/取消”的确认框,返回布尔值。localStorage浏览器提供的持久化键值存储,同源页面共享,关闭浏览器后数据仍在。sessionStorage浏览器提供的会话级键值存储,只在当前标签页有效。locationWindow 或 Document 对象的属性,包含当前 URL 信息并可控制导航。history浏览器历史记录对象,可在不刷新页面的情况下操作会话历史。navigator包含浏览器和设备信息的对象,如用户代理、在线状态、地理位置等。queueMicrotask把回调函数排到当前任务结束后的微任务队列中立即执行。structuredClone全局函数,对值进行深拷贝,支持循环引用和大多数内置类型。BigInt表示任意精度整数的数据类型,可安全存储超出 number 精度的大整数。WeakMap键只能是对象的键值对集合,键被垃圾回收时对应条目自动消失。WeakSet只能存放对象的集合,对象被垃圾回收时自动从集合中移除。Proxy代理对象,可拦截并自定义目标对象的基本操作(如读写属性、函数调用)。Reflect提供一组执行对象基本操作的标准方法,返回值和异常行为更统一。ArrayBuffer固定长度的原始二进制数据缓冲区,不能直接读写,需配合 TypedArray/DataView。Uint8Array8 位无符号整数类型的 TypedArray 视图,每个元素占 1 字节。Intl国际化 API 命名空间,提供日期、数字、语言等本地化格式化工具。encodeURI对 URL 进行编码,保留 URL 中具有特殊意义的字符(如 / : ?)。decodeURI把 encodeURI 编码后的字符串还原为原始 URL。encodeURIComponent对 URL 组件进行编码,所有保留字符都会被编码。decodeURIComponent把 encodeURIComponent 编码后的字符串还原为原始值。isFinite全局函数,判断一个值在转成数字后是否是有限数。Number.isNaNNumber 的静态方法,仅当值真正是 NaN 时返回 true,不做类型转换。Number.isIntegerNumber 的静态方法,判断值是否为整数,不做类型转换。Number.parseIntNumber 的静态方法,与全局 parseInt 功能相同,按指定进制解析整数。Number.parseFloatNumber 的静态方法,与全局 parseFloat 功能相同,解析浮点数。Number.MAX_VALUENumber 的静态属性,表示 JS 能表示的最大有限正数。
数组方法
map数组方法,对原数组每个元素执行一次回调,把返回值收集成一个新数组,原数组不变。filter数组方法,返回由所有通过测试的元素组成的新数组,原数组不变。forEach数组方法,对数组每个元素按顺序执行一次回调,不返回有意义的结果。find数组方法,返回第一个满足测试函数的元素;没有则返回 undefined。reduce数组方法,从左到右把数组“折叠”成一个单一值,可带初始值。push数组方法,在数组末尾添加一个或多个元素,返回新的长度。pop数组方法,移除并返回数组最后一个元素。shift数组方法,移除并返回数组第一个元素,其余元素依次前移。unshift数组方法,在数组开头添加一个或多个元素,返回新的长度。slice数组/字符串方法,返回一段浅拷贝的子数组或子字符串,原数据不变。splice数组方法,在指定位置删除、插入或替换元素,会直接修改原数组。indexOf数组/字符串方法,从左往右找第一个匹配项的索引,找不到返回 -1。includes数组/字符串方法,判断数组是否包含某个值,或字符串是否包含某个子串。join数组方法,用指定分隔符把数组所有元素连接成一个字符串。length数组或字符串的属性,表示数组元素个数或字符串 UTF-16 编码单元个数。sort数组方法,对数组元素原地排序并返回排序后的数组;默认按字符串 Unicode 码点排序。reverse数组方法,把数组元素原地反转并返回反转后的数组。flat按指定深度递归展平嵌套数组,返回新数组。flatMap先对数组每个元素执行 map,再将结果展平一层。some测试数组中是否至少有一个元素通过回调测试。every测试数组中是否所有元素都通过回调测试。findIndex返回第一个满足测试条件的元素索引,找不到返回 -1。findLast从数组末尾开始查找,返回第一个满足测试条件的元素。keys返回一个包含数组所有索引的迭代器对象。values返回一个包含数组所有值的迭代器对象。entries返回一个包含 [索引, 值] 键值对的迭代器对象。fill用指定值填充数组中的一部分或全部元素,修改原数组。copyWithin把数组的一部分浅拷贝到同一数组的另一个位置,修改原数组。reduceRight从右到左把数组聚合成一个值,与 reduce 方向相反。Array.from静态方法,把类数组对象或可迭代对象转换成真正的数组。Array.of静态方法,根据传入的参数创建数组,不会把单个数字当长度。
字符串方法
split字符串方法,按指定分隔符把字符串拆分成数组。trim字符串方法,去掉字符串两端的空白字符(空格、制表符、换行等)。toUpperCase字符串方法,把字符串里所有小写字符转成大写。toLowerCase字符串方法,把字符串里所有大写字符转成小写。replace字符串方法,把字符串中第一个匹配的内容替换成新内容。substring字符串方法,返回从起始索引到结束索引(不含)之间的子串;不接受负数。charAt字符串方法,返回指定索引位置的单个 UTF-16 编码单元字符。startsWith判断字符串是否以指定子串开头。endsWith判断字符串是否以指定子串结尾。padStart在字符串开头填充字符,直到达到指定长度。padEnd在字符串末尾填充字符,直到达到指定长度。repeat把字符串重复指定次数并返回新字符串。replaceAll把字符串中所有匹配的内容替换成新内容。match用正则表达式匹配字符串,返回匹配结果数组或 null。search用正则表达式查找第一次匹配的位置,找不到返回 -1。charCodeAt返回指定索引处 UTF-16 编码单元的数字编码。codePointAt返回指定索引处字符的 Unicode 码点,能正确处理辅助平面字符。trimStart去掉字符串开头的空白字符,返回新字符串。trimEnd去掉字符串末尾的空白字符,返回新字符串。
运算符/符号
=赋值运算符,把右边的值存到左边的变量里。==宽松相等运算符,比较前会按规则把两边转成相同类型再比较(不推荐用)。===严格相等:不仅值要一样,类型也得一样才返回 true,像查身份证时要姓名和身份证号都对上。!=宽松不等运算符,比较前会按规则把两边转成相同类型再比较(不推荐用)。!==严格不等运算符:值和类型只要有一个不同就返回 true,两个都相同时才返回 false。>大于运算符,判断左边的值是否大于右边的值。<小于运算符,判断左边的值是否小于右边的值。>=大于等于运算符,判断左边的值是否大于或等于右边的值。<=小于等于运算符,判断左边的值是否小于或等于右边的值。+加法运算符,对数字做算术加法;若任一操作数是字符串,则做字符串拼接。-减法运算符,返回左边值减去右边值的结果。*乘法运算符,返回两个数相乘的结果。/除法运算符,返回左边值除以右边值的结果;除数为 0 时返回 Infinity。%取余运算符,返回左边值除以右边值的余数。**幂运算符,返回以左边为底、右边为指数的乘方结果。++自增运算符,把变量值加 1;前置先加后用,后置先用后加。--自减运算符,把变量值减 1;前置先减后用,后置先用后减。+=加法赋值运算符,先计算左边加右边,再把结果赋回左边变量。-=减法赋值运算符,先计算左边减右边,再把结果赋回左边变量。&&逻辑与:只有两边都为真时结果才是真,像串联电路,任意一个开关断开整个电路就不通。||逻辑或:只要有一边为真结果就是真,像并联电路,任意一条线路通灯就亮。!逻辑非:把布尔值反过来,真变假、假变真,像照相机的负片效果。??空值合并运算符,当左边是 null 或 undefined 时返回右边的值,否则返回左边。?.可选链运算符,当左侧是 null 或 undefined 时直接返回 undefined,不会继续访问属性或调用方法。...展开语法/剩余参数,在数组/对象前展开元素,或在函数参数里收集多余参数。=>箭头函数的语法糖,把函数写得更短,并且没有自己的 this,像把普通函数压缩成一条传送带。?条件(三元)运算符,根据条件真假返回两个表达式中的一个,是 if...else 的表达式形式。.成员访问运算符,通过点号读取对象的属性或调用对象的方法。,逗号运算符,按顺序计算多个表达式并返回最后一个值;也用于分隔数组元素、对象属性和函数参数。;语句结束符,用来分隔语句;JS 有自动分号插入机制,但显式写分号可避免歧义。( )圆括号,用于分组运算、函数调用、参数列表、控制语句条件等。[ ]方括号,用于创建数组字面量、通过索引访问数组元素,或通过表达式访问对象属性。{ }大括号,用于包裹代码块、创建对象字面量、解构赋值等。`反引号,用于定义模板字符串,可在字符串中嵌入表达式和多行文本。
通用兜底
字符串字符串类型:用单引号、双引号或反引号包围的一段文本序列。模板字符串模板字符串:用反引号包围的字符串,可用 ${表达式} 嵌入变量或表达式,并支持多行。数字数字类型:JS 中整数和浮点数统一为 number 类型,采用 IEEE 754 双精度浮点表示。注释单行注释:// 之后到行尾的内容会被解释器忽略,用于写给人看的说明。块注释块注释:/* 开头、*/ 结尾,中间所有内容都会被解释器忽略,可跨多行。变量变量:给数据起的名字,通过名字引用存储的值。函数调用函数调用:函数名加圆括号,触发函数执行并可传入参数。方法方法调用:通过点号调用某个对象上的函数,this 指向该对象。属性属性:对象上存储的数据,可用点号或方括号读取、修改。缩进缩进:代码块前的空格,只影响可读性不影响执行;JS 代码块由大括号划分。运算符运算符/符号兜底:算术、比较、逻辑、位运算、赋值等一切运算符号。正则表达式正则表达式字面量:用斜杠包围的字符串匹配模式,可附加标志。
关键字
const声明一个贴了封条的变量名:名字一旦绑定就不能再指向别处,像把标签永久贴在一个盒子上;但盒子里装的是对象时,内部内容还能换。let声明一个可换标签的变量:名字和值的绑定可以随时改写,像便利贴上写的内容可以擦掉重写。var老式的变量声明,像把标签贴在整栋楼的公告栏上:作用域宽大,容易在不经意间被别处影响。function给一段可复用的代码起个名字、封成工具包,以后喊名字就能复用,像厨房里的标准菜谱。return把函数里算好的结果递出窗口给调用方,同时立刻关门下班,后面同级的代码不再执行,像奶茶店把做好的饮料递出去就叫下一位。if先看条件是不是真,真就执行大括号里的代码,假就跳过,像过安检时行李没问题的才放行。elseif 条件不成立时的备用通道,像快餐店主食卖完了就给你上备选套餐。for把一段代码按固定规则重复执行若干次,像自动扶梯把人一个个送上去:初始化、条件、步进三段都写在一行。while只要条件还成立就反复执行循环体,像洗衣机检测到水没排干就继续排水,排完才停。dodo...while 循环的关键字:先执行一次循环体,再判断条件决定是否继续。break立刻终止当前所在的循环或 switch,像听到下课铃就冲出教室。continue跳过当前这一轮循环的剩余代码,直接进入下一轮,像排队时轮到你了你说“这轮我先不要”,然后站到队尾等下一轮。switch把一个值和多个 case 做等值比较,匹配上就从那里开始执行,像快递分拣员按地区把包裹投进不同格口。caseswitch 语句的分支标签:表达式的值严格等于该标签值时,从这里开始执行。defaultswitch 语句的默认分支:所有 case 都不匹配时执行。try把可能出错的代码包起来,一旦出错就把控制权交给 catch,像给易碎品包上气泡膜,碎了也有缓冲。catch接住 try 块里抛出的错误对象,像消防员接住从楼上跳下来的人,然后进行处理。finallytry...catch...finally 的收尾块:无论是否发生异常都会执行。throw主动抛出一个异常对象,可由 try...catch 捕获或向上传播。new调用构造函数或类,创建一个全新的对象实例,像用模具压出一个新的饼干。class定义一张对象图纸,规定这类对象有哪些属性和方法,像建筑蓝图决定房子的结构。extends让一个类继承另一个类的全部能力,并允许扩展或覆盖,像儿子天生会爸爸的手艺,还能学新本事。super在子类构造函数或方法中调用父类的构造函数或方法。this指向当前执行上下文里的那个对象,像自拍时镜头永远拍的是拿手机的人。static声明类级别的属性或方法,不需要创建实例就能通过类名访问。get定义对象的访问器属性:读取该属性时会自动调用对应的函数。set定义对象的设置器属性:给该属性赋值时会自动调用对应的函数。instanceof二元运算符,判断一个对象是否是某个构造函数的实例(会沿原型链检查)。typeof返回一个值对应的类型名字符串,像给东西贴类别标签:是数字、字符串还是别的。delete删除对象的属性、数组元素或全局变量(非严格模式);成功删除返回 true。in判断指定属性是否存在于对象自身或其原型链上。offor...of 循环的一部分,用于遍历可迭代对象的每个值。import从其他模块导入绑定(ES 模块语法)。export把当前模块的声明暴露出去,供其他模块 import。fromimport 或 export...from 语句中指定来源模块的关键字。async给一个函数打上“内部会有等待”的标记,让它自动返回 Promise,像给普通函数装上异步引擎。await暂停当前 async 函数的执行,等右边的 Promise 出结果后再继续,像等泡面泡好才能吃。yield生成器函数中暂停并返回一个值,下次调用 next() 从当前位置继续执行。void一元运算符,执行右侧表达式并返回 undefined。with已废弃的语句:把对象的属性展开到当前作用域链中,严格模式下禁用。debugger在调试器中设置一个断点,执行到这里会暂停。true布尔值里的是 / 对 / 成立,像开关拨到了“开”的位置。false布尔值里的否 / 错 / 不成立,像开关拨到了“关”的位置。null表示故意留空的值,像抽屉里明明没有东西,但你知道这个抽屉是被指定用来放东西的。undefined表示还没被赋值的状态,像快递柜的格子还没被快递员放进包裹。
保留字
enum保留字:不能用作变量名或标识符,严格模式和非严格模式下都不行(和 implements 等严格模式保留字不同)。implements未来保留字:严格模式下不能用作标识符。package未来保留字:严格模式下不能用作标识符。protected未来保留字:严格模式下不能用作标识符。private未来保留字:严格模式下不能用作标识符。public未来保留字:严格模式下不能用作标识符。eval全局函数,把传入的字符串作为 JS 代码执行。
关键字/特殊标识符
arguments函数体内部的类数组对象,自动包含传入的所有实参。
数学方法
Math.PIMath 的静态属性,表示圆周率 π。Math.EMath 的静态属性,表示自然常数 e。Math.sqrt返回一个非负数的平方根。Math.pow返回底数的指数次幂。Math.sin返回一个弧度的正弦值。Math.cos返回一个弧度的余弦值。Math.tan返回一个弧度的正切值。Math.log返回一个数的自然对数(以 e 为底)。Math.exp返回 e 的 n 次幂,是 Math.log 的反函数。Math.sign返回数字的符号:正数返回 1,负数返回 -1,零返回 0。Math.trunc去掉数字的小数部分,只保留整数部分。Math.cbrt返回一个数的立方根。
通用方法
concat字符串或数组方法,把多个字符串/数组合并成一个新字符串/数组。at字符串或数组方法,按索引取字符/元素,支持负数从末尾倒数。lastIndexOf字符串或数组方法,从后往前查找子串或元素第一次出现的位置。
对象方法
Object.assign静态方法,把一个或多个源对象的可枚举自有属性复制到目标对象。Object.entries静态方法,把对象自身的可枚举属性转换成 [键, 值] 数组。Object.fromEntries静态方法,把 [键, 值] 数组转换成对象。Object.freeze静态方法,冻结对象,使其属性不可添加、删除或修改。hasOwnProperty实例方法,判断属性是否为对象自身的属性(而非继承自原型链)。
Promise
Promise.thenPromise 实例方法:注册异步操作成功时的回调,返回新的 Promise。Promise.catchPromise 实例方法:注册异步操作失败时的回调,返回新的 Promise。Promise.finallyPromise 实例方法:无论成功或失败都会执行的回调,返回新的 Promise。Promise.all静态方法:等所有 Promise 都成功时返回结果数组,任一失败则整体失败。Promise.race静态方法:返回最先落定(成功或失败)的那个 Promise 的结果。Promise.allSettled静态方法:等所有 Promise 都完成,返回带状态的结果数组。Promise.any静态方法:返回第一个成功的 Promise;全部失败时返回 AggregateError。Promise.resolve静态方法:快速创建一个已成功状态的 Promise。Promise.reject静态方法:快速创建一个已失败状态的 Promise。
控制台
console.warn在控制台输出警告信息,浏览器通常显示黄色三角图标。console.error在控制台输出错误信息,浏览器通常显示红色叉图标。console.info在控制台输出信息性日志,功能与 log 类似。console.table把数组或对象以表格形式打印到控制台。console.time启动一个带标签的计时器。console.timeEnd结束对应标签的计时器并打印耗时。console.clear清空控制台输出。console.group把后续日志折叠到一个可展开的组里。
网页功能
document.getElementById通过 id 属性获取文档中对应的单个元素。document.querySelector用 CSS 选择器获取文档中第一个匹配的元素。document.querySelectorAll用 CSS 选择器获取文档中所有匹配的元素集合。document.createElement创建指定标签名的新 HTML 元素,但还不会显示在页面上。document.body文档的 <body> 元素,页面可见内容的根容器。document.title文档的标题,显示在浏览器标签页或窗口标题栏。addEventListener给 DOM 元素注册事件监听器,指定事件类型和回调函数。removeEventListener移除已注册的事件监听器。appendChild将一个节点添加到另一个节点的子节点列表末尾。classList元素的类名集合对象,提供 add/remove/toggle/contains 等方法。innerHTML元素内部 HTML 标记字符串,可读取也可赋值。textContent元素及其后代的文本内容,赋值时不会解析 HTML。style元素的内联样式对象,用于读写 CSS 属性。getAttribute获取元素上指定属性的字符串值。setAttribute为元素设置指定属性的值。remove把当前元素从 DOM 树中移除。dataset元素上 data-* 自定义属性的集合对象,以驼峰形式访问。location.hrefLocation 对象的字符串形式,表示完整 URL;赋值会跳转页面。location.reload重新加载当前文档。history.back在会话历史中向后移动一步,等价于点击浏览器后退按钮。window.innerWidth浏览器窗口视口(viewport)的内部宽度,不含滚动条等 UI。window.innerHeight浏览器窗口视口(viewport)的内部高度。localStorage.getItem从 localStorage 中读取指定键的值。localStorage.setItem把字符串值保存到 localStorage 的指定键下。
运算符
*=乘法赋值运算符,先相乘再把结果赋给左边变量。/=除法赋值运算符,先相除再把结果赋给左边变量。%=取余赋值运算符,先取余再把结果赋给左边变量。**=幂赋值运算符,先求幂再把结果赋给左边变量。&=按位与赋值运算符,先按位与再把结果赋给左边变量。|=按位或赋值运算符,先按位或再把结果赋给左边变量。^=按位异或赋值运算符,先按位异或再把结果赋给左边变量。<<=左移赋值运算符,先左移再把结果赋给左边变量。>>=有符号右移赋值运算符,先右移再把结果赋给左边变量。>>>=无符号右移赋值运算符,先右移再把结果赋给左边变量。~按位 NOT 运算符,对操作数的每个二进制位取反。&按位 AND 运算符,两个位都为 1 时结果位才为 1。|按位 OR 运算符,两个位中有一个为 1 时结果位就为 1。^按位 XOR 运算符,两个位不同时结果位为 1。<<左移运算符,把二进制位向左移动,右侧补 0。>>有符号右移运算符,左侧补符号位,保持正负号。>>>无符号右移运算符,左侧补 0,结果总为非负数。&&=逻辑与赋值运算符,左边为真值时才把右边值赋给左边。||=逻辑或赋值运算符,左边为假值时才把右边值赋给左边。??=空值合并赋值运算符,左边为 null 或 undefined 时才把右边值赋给左边。