# @es-joy/esutils 中文文档

规范地址：https://npmcn.com/package/%40es-joy/esutils/

版本：3\.0\.0
npm 元数据更新时间：2026-08-21T12:04:54.927Z
中文译文更新时间：2026-11-13T21:49:22.085Z
软件包许可：BSD-2-Clause

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40es-joy/esutils
原文对照：https://npmcn.com/package/%40es-joy/esutils/?lang=original
项目主页：https://github.com/es-joy/esutils
源码仓库：http://github.com/es-joy/esutils

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：146 kB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.16\.0 \|\| \>=24\.0\.0
- 运行依赖：1 个
- 首次发布：2026-08-21T12:04:54.237Z
- 最新版本发布：2026-08-21T12:04:54.636Z
- 近 30 天下载量：172116（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 1 个）

## 中文简介

eCMAScript 语言工具的工具框

## 安装

```sh
npm install @es-joy/esutils
```

也可以使用：`pnpm add @es-joy/esutils`、`yarn add @es-joy/esutils`、`bun add @es-joy/esutils`

## README

# @es-joy/寿司

@es-joy/sutils是ECMAScript语言工具的实用框.

## API 密码

## `ast`

### `ast.isExpression(node)`

回返 `true` 若为 `node` 是一个 `Expression` 根据ECMA262版第5.1节的定义 [第11个](https://es5.github.io/#x11)。 。 。 .

### `ast.isStatement(node)`

回返 `true` 若为 `node` 是一个 `Statement` 根据ECMA262版第5.1节的定义 [第12条](https://es5.github.io/#x12)。 。 。 .

### `ast.isIterationStatement(node)`

回返 `true` 若为 `node` 是一个 `IterationStatement` 根据ECMA262版的定义 5.1节 [12.6 国家](https://es5.github.io/#x12.6)。 。 。 .

### `ast.isSourceElement(node)`

回返 `true` 若为 `node` 是一个 `SourceElement` eCMA262 第5.1版定义 节 [页:1](https://es5.github.io/#x14)。 。 。 .

### `ast.trailingStatement(node)`

回返 `Statement?` 若为 `node` 有线索 `Statement`。 。 。 .

```js
if (cond) {
  consequent;
}
```

拿着这个的时候 `IfStatement`返回 `consequent;` 语句.

### `ast.isProblematicIfStatement(node)`

回返 `true` 若为 `node` 是个问题 `IfStatement`如果 `node` 是个问题 `IfStatement`, (中文(简体) ), `node` 无法以一对一的 JavaScript 代码表示 .

```js
const ast = {
  type: 'IfStatement',
  consequent: {
    type: 'WithStatement',
    body: {
      type: 'IfStatement',
      consequent: {type: 'EmptyStatement'}
    }
  },
  alternate: {type: 'EmptyStatement'}
};
```

以上节点不能作为 JavaScript 代码表示, 因为顶级 `else` 属于内部 `IfStatement`。 。 。 .

## `code`

### `code.isDecimalDigit(code)`

返回时 `true` 如果提供的代码是小数位数.

### `code.isHexDigit(code)`

返回时 `true` 如果提供的代码是十六进制数字.

### `code.isOctalDigit(code)`

返回时 `true` 如果提供的代码是八进制数字.

### `code.isWhiteSpace(code)`

返回时 `true` 如果提供的代码是空白. 白空字符在ECMA262中被正式定义.

### `code.isLineTerminator(code)`

返回时 `true` 如果提供的代码是行终止符. 行名词字符在ECMA262中被正式定义.

### `code.isIdentifierStart(code)`

返回时 `true` 如果提供的代码可以是ECMA262的第一个字符 `Identifier`。 。 。 . ECMA262正式界定了它们.

### `code.isIdentifierPart(code)`

返回时 `true` 如果提供的代码可以是ECMA262的后缀字符 `Identifier`。 。 。 . ECMA262正式界定了它们.

## `keyword`

### `keyword.isKeywordES5(id, strict)`

回返 `true` 如果提供标识字符串是关键词或未来保留词 载于ECMA262第5.1版. ECMA262部分正式界定了这些定义 [7.6.1.1 (中文(简体) )](http://es5.github.io/#x7.6.1.1) 财务报告和审定财务报表 [7.6.1.2 (中文(简体) )](http://es5.github.io/#x7.6.1.2), (中文(简体) ), 页:1. 如果 `strict` 旗帜是真实的,此函数额外检查是否 `id` 是一个 `Keyword` 或者说 `FutureReservedWord` 在严格模式下.

### `keyword.isKeywordES6(id, strict)`

回返 `true` 如果提供的标识字符串是 `Keyword` 或者说 `FutureReservedWord` 载于ECMA262 第6版. ECMA262部分正式界定了这些定义 [11.6.2.1 国家](http://ecma-international.org/ecma-262/6.0/#sec-keywords) 财务报告和审定财务报表 [11.6.2.2 国家](http://ecma-international.org/ecma-262/6.0/#sec-future-reserved-words), (中文(简体) ), 页:1. 如果 `strict` 旗帜是真实的,此函数额外检查是否 `id` 是一个 `Keyword` 或者说 `FutureReservedWord` 在严格模式下.

### `keyword.isReservedWordES5(id, strict)`

回返 `true` 如果提供的标识字符串是 `ReservedWord` 载于ECMA262第5.1版. 在ECMA262节中正式界定 [7.6.1 国家](http://es5.github.io/#x7.6.1)。 。 。 . 如果 `strict` 旗帜是真实的,此函数额外检查是否 `id` 是一个 `ReservedWord` 在严格模式下.

### `keyword.isReservedWordES6(id, strict)`

回返 `true` 如果提供的标识字符串是 `ReservedWord` 载于ECMA262 第6版. 在ECMA262节中正式界定 [11.6.2 (中文(简体) )](http://ecma-international.org/ecma-262/6.0/#sec-reserved-words)。 。 。 . 如果 `strict` 旗帜是真实的,此函数额外检查是否 `id` 是一个 `ReservedWord` 在严格模式下.

### `keyword.isRestrictedWord(id)`

回返 `true` 如果提供的标识字符串是其中之一 `eval` 或者说 `arguments`。 。 。 . 在整个ECMA262第5.1版和 eCMA262 第6版,第6节 [12.1.1 (中文(简体) )](http://ecma-international.org/ecma-262/6.0/#sec-identifiers-static-semantics-early-errors)。 。 。 .

### `keyword.isIdentifierNameES5(id)`

返回时 `true` 如果提供的标识字符串是 `IdentifierName` 二. 说明 ECMA262 第5.1版 第1节 [7.6 (中文(简体) )](https://es5.github.io/#x7.6)。 。 。 .

### `keyword.isIdentifierNameES6(id)`

返回时 `true` 如果提供的标识字符串是 `IdentifierName` 二. 说明 ECMA262 第6版 第6节 [11.6 联合国](http://ecma-international.org/ecma-262/6.0/#sec-names-and-keywords)。 。 。 .

### `keyword.isIdentifierES5(id, strict)`

返回时 `true` 如果提供的标识字符串是 `Identifier` 二. 说明 ECMA262 第5.1版 第1节 [7.6 (中文(简体) )](https://es5.github.io/#x7.6)。 。 。 . 如果 `strict` 旗帜是真实的,此函数额外检查是否 `id` 是一个 `Identifier` 在严格模式下.

### `keyword.isIdentifierES6(id, strict)`

返回时 `true` 如果提供的标识字符串是 `Identifier` 二. 说明 ECMA262 第6版 第6节 [12.1 国家](http://ecma-international.org/ecma-262/6.0/#sec-identifiers)。 。 。 . 如果 `strict` 旗帜是真实的,此函数额外检查是否 `id` 是一个 `Identifier` 在严格模式下.

## 许可证

版权(C)2013年 [铃木雄介](http://github.com/Constellation) (推特: [@ 星座图](http://twitter.com/Constellation)和其他贡献者.

源形式和二进制形式的再分配和使用,不论有无 修改,但必须符合下列条件:

-   源代码的再分配必须保留上述版权 通知、本条件清单和下列免责声明.
    
-   二进制形式的再分配必须复制上述版权 通知、本条件清单和 分发时提供的文件和/或其他材料.
    

这个软件是由警察的 持有和贡献"是" 和任何战争遗留爆炸物,包括,但不受限制 紧迫性和特别目的的保证 被隔离。 绝对不能为任何人 直接、间接、突发事件、特别、紧急、或后果 (包括,但不限制,实质性货物或服务的采购; 使用、数据或赞助;或业务中断) 关于任何负债的理论,无论在合同、合同或合同中 以任何方式出现于 这个软件,甚至如果 警告这种可能性的 如此灾难.

## 常见问题

### @es-joy/esutils 是什么？

eCMAScript 语言工具的工具框

### 如何安装 @es-joy/esutils？

在项目目录运行 npm install @es-joy/esutils，或使用 pnpm add / yarn add / bun add。

### @es-joy/esutils 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @es-joy/esutils 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @es-joy/esutils 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^22\.16\.0 \|\| \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @es-joy/esutils 可以商用吗？

@es-joy/esutils 使用 BSD-2-Clause 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @es-joy/esutils 的下载量有多少？

根据 npm 官方下载统计，@es-joy/esutils 在 2026/10/14 – 2026/11/12 这 30 天内被下载 172,116 次，日均约 5,737 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @es-joy/esutils 还在维护吗？

最新版本 3\.0\.0 发布于 2026/08/21（2 个月前）；至今共发布 1 个版本，其中过去 12 个月发布了 1 个；首次发布于 2026/08/21。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

