Skip to content
← Back to rules

eslint/no-obj-calls 正确性

This rule is turned on by default.

它做了什么

禁止将某些全局对象当作函数调用。

此规则在 TypeScript 代码中可以被禁用,因为 TypeScript 编译器会强制执行此检查。

为什么这是不好的?

某些全局对象并非设计为作为函数调用。将其当作函数调用通常会导致抛出 TypeError。

示例

此规则的错误代码示例:

javascript
let math = Math();
let newMath = new Math();

let json = JSON();
let newJson = new JSON();

let atomics = Atomics();
let newAtomics = new Atomics();

let intl = Intl();
let newIntl = new Intl();

let reflect = Reflect();
let newReflect = new Reflect();

此规则的正确代码示例:

javascript
let area = (r) => 2 * Math.PI * r * r;
let object = JSON.parse("{}");
let first = Atomics.load(sharedArray, 0);
let segmenterFrom = Intl.Segmenter("fr", { granularity: "word" });

如何使用

要通过配置文件或命令行启用此规则,可以使用:

json
{
  "rules": {
    "no-obj-calls": "error"
  }
}
bash
oxlint --deny no-obj-calls

参考资料