我们需要 ESLint 中的规则 "checking duplicate keys" 吗?

Do we need the rule "checking duplicate keys" in ESLint?

这个例子是从disallow duplicate keys in object literals (no-dupe-keys)复制的:

var foo = {
    bar: "baz",
    bar: "qux"
};

当我们调用它时:

alert(foo['bar']);

字符串 qux 将被抛出。这也意味着,foo['bar'] = "baz" 已被覆盖,无法分配给它。所以,你应该删除它。

好看吗?

我再举个例子:

let element = $('<span/>').text('Hi!');
element.css({
    display: '-webkit-box',
    display: '-moz-box'
});

嗯,display: '-webkit-box' 也会被覆盖,不能赋值吗?

不,它在Chrome上很有用,-moz-box将在FF上使用。所以,他们是不同的。

然后,规则被打破了...

是否应该为将来编辑它?

是的,我们[需要这条规则]。

在对象中重新分配一个值充其量是无用和误导的,最坏的情况是它是一个彻头彻尾的错误。

你的第二个例子仍然是一个普通的旧 JS 对象,你正在覆盖 display