diff --git a/files/zh-cn/web/javascript/reference/operators/import/index.md b/files/zh-cn/web/javascript/reference/operators/import/index.md index e8096d9309261b..5922d755d87027 100644 --- a/files/zh-cn/web/javascript/reference/operators/import/index.md +++ b/files/zh-cn/web/javascript/reference/operators/import/index.md @@ -23,7 +23,7 @@ import(moduleName, options) ### 参数 - `moduleName` - - : 要导入的模块。说明符的求值是宿主特异的(host-specified),但始终遵循与静态的 [import 声明](/zh-CN/docs/Web/JavaScript/Reference/Statements/import)相同的算法。 + - : 要导入的模块。标识符的求值是宿主特异的(host-specified),但始终遵循与静态的 [import 声明](/zh-CN/docs/Web/JavaScript/Reference/Statements/import)相同的算法。 - `options` - : 一个包含了导入选项的对象。以下是可识别的键: - `with` @@ -46,7 +46,7 @@ import 声明语法(`import something from "somewhere"`)是静态的,并 - 当静态导入显著减慢你的代码加载,或增加你的程序内存使用时,那么你很可能不需要正要导入的代码,或者以后才会需要它。 - 当你正要导入的模块在加载时并不存在时。 -- 当导入说明符字符串需要动态构建时。(静态导入仅支持静态说明符。) +- 当导入标识符字符串需要动态构建时。(静态导入仅支持静态标识符。) - 当你正要导入的模块有副作用,并且你仅在某些条件下才希望有这些副作用。(建议模块中不要有任何副作用,但有时模块的依赖项中是否有副作用也无法控制) - 当你处于非模块化的环境(例如,`eval` 或脚本文件)时。 @@ -60,7 +60,7 @@ import 声明语法(`import something from "somewhere"`)是静态的,并 import("./data.json", { with: { type: "json" } }); ``` -动态模块导入并不在所有执行上下文中都可使用。例如,`import()` 可以在主线程、共享工作线程(shared worker)或专用工作线程(dedicated worker)中使用,但如果在 [service worker](/zh-CN/docs/Web/API/Service_Worker_API) 或 [worklet](/zh-CN/docs/Web/API/Worklet) 中调用,则会抛出错误。 +动态模块导入并不在所有执行上下文中都可使用。例如,`import()` 可以在主线程、共享/专用 worker 中使用,但如果在 [service worker](/zh-CN/docs/Web/API/Service_Worker_API) 或 [worklet](/zh-CN/docs/Web/API/Worklet) 中调用,则会抛出错误。 ### 模块命名空间对象 @@ -68,9 +68,9 @@ import("./data.json", { with: { type: "json" } }); 模块命名空间对象是一个[密封](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed)的对象,它具有 [null 原型对象](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object#null_原型对象)。也就是说,对象的所有字符串键对应于模块的导出,并且永远不会有额外的键。所有键都是以字典序[可枚举的](/zh-CN/docs/Web/JavaScript/Enumerability_and_ownership_of_properties)(即 [`Array.prototype.sort()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#描述) 的默认行为),默认导出名为 `default` 的键。此外,模块命名空间对象具有一个 [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性,值为 `"Module"`,在 {{jsxref("Object.prototype.toString()")}} 中被使用。 -在使用 {{jsxref("Object.getOwnPropertyDescriptors()")}} 获取它们的描述符时,字符串属性是不可配置的(non-configurable)但是可写入的。然而,它们实际上是只读的,因为你不能给属性重新赋一个新的值。这些值可以由导出它们的模块重新赋值,但不能由导入它们的模块重新赋值——这种行为反映了静态导入所创建的[实时绑定](/zh-CN/docs/Web/JavaScript/Reference/Statements/import#导入的值只能由导出者修改)。属性的可写入性反映了值是可能变化的,因为不可配置和不可写入的属性必须是常量。例如,你可以重新给一个变量的导出赋值,并且可以在模块命名空间对象中观察到新的值。 +在使用 {{jsxref("Object.getOwnPropertyDescriptors()")}} 获取它们的描述符时会发现,字符串属性是不可配置的和可写入的。然而它们实际上是只读的,因为你不能给属性重新赋一个新的值。这些值可以由导出它们的模块重新赋值,但不能由导入它们的模块重新赋值——这种行为反映了静态导入所创建的[实时绑定](/zh-CN/docs/Web/JavaScript/Reference/Statements/import#导入的值只能由导出者修改)。属性的可写入性反映了值是可能变化的,因为不可配置和不可写入的属性必须是常量。例如,你可以重新给一个变量的导出赋值,并且可以在模块命名空间对象中观察到新的值。 -每个模块说明符对应一个唯一的模块命名空间对象,所以以下通常是正确的: +每个模块标识符对应一个唯一的模块命名空间对象,所以下面的代码通常是正确的: ```js import * as mod from "/my-module.js"; @@ -169,9 +169,9 @@ if (typeof window === "undefined") { } ``` -### 使用非字面量说明符导入模块 +### 使用非字面量标识符导入模块 -动态导入允许任何表达式作为模块说明符,而不仅仅是字符串字面量。 +动态导入允许任何表达式作为模块标识符,而不仅仅是字符串字面量。 这里,我们同时加载 10 个模块(如 `/modules/module-0.js`、`/modules/module-1.js` 等),并调用每个模块导出的 `load` 函数。