Versions

no-reserved-keys

不允许在对象字面量中使用未加引号的保留字作为属性名称。 .

(已移除)此规则在 ESLint v1.0 中移除并被 quote-props 所取代。

ECMAScript 3 描述了一系列的关键字和保留词,如 ifpublic,这些关键字和保留词用于或打算用于一个核心语言特性。该规范还指出,这些关键词和保留词不能作为对象属性名称,而要用字符串括起来。在 ECMAScript 3 环境下,当你在一个对象字面中使用关键字或保留字时,会发生错误。比如:

var values = {
    enum: ["red", "blue", "green"]  // throws an error in ECMAScript 3
}

在这段代码中,enum 被用作对象键,在 ECMAScript 3 环境下(如 Internet Explorer 8)会出现错误。

ECMAScript 5 放宽了限制,关键字和保留字可以作为对象的键,而不会引起错误。然而,任何需要在 ECMAScript 3 中运行的代码仍然需要避免使用关键字和保留字作为键。

规则细节

这条规则的目的是消除使用 ECMAScript 3 关键字和保留词作为对象字面的键。因此,在 ECMAScript 3 环境下,只要有一个对象键会出错,它就会发出警告。

使用此规则的错误示例:

Open in Playground
var superman = {
    class: "Superhero",
    private: "Clark Kent"
};

var values = {
    enum: ["red", "blue", "green"]
};

使用此规则的正确示例:

Open in Playground
var superman = {
    "class": "Superhero",
    "private": "Clark Kent"
};

var values = {
    "enum": ["red", "blue", "green"]
};

何时不用

如果你的代码只在 ECMAScript 5 或更高的环境中执行,那么你可以安全地关闭这个规则。

Version

This rule was introduced in ESLint v0.8.0 and removed in v1.0.0.

Further Reading

更改语言