我们需要 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
。
这个例子是从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
。