gpt4 book ai didi

javascript - 为什么开发人员偶尔会在 "SharedArrayBuffer" "Atomics"属性中添加 ".eslintrc.json"和 "globals"?

转载 作者:行者123 更新时间:2023-12-05 00:35:20 27 4
gpt4 key购买 nike

的目的是什么SharedArrayBuffer , 和 Atomics ,被添加到 .eslintrc.json 配置文件的"globals"属性(property)?

我看到人们做的例子:

    /** @file "./.eslintrc.json" */

"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
}

最佳答案

定义内置全局属性

我想合适的起点是告诉读者JavaScript implements Built-In Global Variables。 .这意味着:在 JavaScript 运行之前,JS-Engine 初始化 ECMAScript 标准定义的预定义变量,这些变量由编写 JavaScript 引擎(V8、Spider-Monkey 等)的人实现。内置的全局变量非常易于评估,事实上它们在 JavaScript 中随处可访问。

内置全局变量可能成为工具问题的原因

甚至不必声明或启动变量。更简单地说,从 JavaScript 程序的 Angular 来看,它们始终存在,并且始终可访问,正是这些特性使内置全局变量成为开发工具的问题,尤其是 "ESLint" .

Globals Property 提供解决方案

"ESLint"知道何时定义了变量,因为它会解析您的代码——一旦到达变量的声明,它就会记录该声明。 ESLint 使用它收集的关于变量声明的数据来了解关于变量的一些不同的“事情”,但我们关心的是,它使用数据来了解正在使用的变量是否之前声明过,如果没有声明过, ESLint 显示 Error .因为,如前所述,全局变量从未被声明过,ESLint 会显示错误,即使代码是有效的,如果你按照 ESLint 的建议进行操作并声明全局变量,那将不仅仅是一个错误,它会很愚蠢(请原谅我的法语,但我想大多数人都会同意),所以为了避免所有这些困惑,ESLint 提供了在一个特殊的 中声明任何全局变量的能力,无论是否预先构建。 "globals":{}
那个变量。通过按照我刚才描述的方式工作,ESLint 能够在程序未使用已声明的变量时通知您
通过解析你的脚本,并准备好你定义任意变量的部分,并且由于你没有定义内置的全局变量,ESLint 无法判断它们已经被实例化,除非你当然将它们声明为全局变量在您的 eslintrc.json (或者如果你是叛逆者,.eslintrc.yaml ) "globals":{} 属性,可在 .eslintrc.json 中找到(或者对于叛军,.eslintrc.yaml 文件)。

原子和 SharedArrayBuffer

因此,归根结底,您可以看到 Atomics 和 SharedArrayBuffer 是内置的全局变量,ESLint 无法识别。既然你在问它们,我假设你没有使用它们,如果我的假设是正确的,你应该删除它们。不要声明您从未使用过的任何全局变量。我不知道 Atomics 和 SharedArrayBuffer 是如何开始作为全局变量默认包含在 ESLint 配置文件中的,但据我所知,这种做法是不合理的,我只在“普通”教程中看到它显示在互联网上。如果有的话,应该包括 Mocha 全局变量,因为 JavaScript 开发人员使用 Mocha 进行测试比使用 Atomics 和 SharedArrayBuffer 更常见,但 Mocha 不是内置的,因此实际上可能很愚蠢。 IMO,如果您不使用全局,请不要在任何地方声明它,即使在配置文件中也不行。

以下是我看到使用的最常见的预构建全局变量:

  • 数组缓冲区
  • SharedArrayBuffer
  • 原子
  • JSON

  • If you want to know what all the built-in globals are, you can follow the link above — its included at the start of this answer.

    关于javascript - 为什么开发人员偶尔会在 "SharedArrayBuffer" "Atomics"属性中添加 ".eslintrc.json"和 "globals"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68338890/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com