我正在参与一个项目,其中包含多个JavaScript文件,目前我正在做的部分工作是将现有代码迁移到使用更新的ES6+特性,并确保我们遵守AirBnB Eslint规则。
因此,在这种情况下,这是具体的情况:
let meta = [a.platform];
紧接着就是:
meta.push(a.browserName ? a.browserName : 'any');
所以现在 linter 给我一个警告:'meta is never reassigned. Use const instead'.
我明白 meta = somethingNew
会重新赋值变量。但在这种情况下,这个变量难道不是与创建时不同的吗?
或者,为了更清楚
我能用 const 定义一个会接收新项的数组吗?如果不能,为什么?
还有,如果不能:为什么 linter 会发出警告?
Object
类型(如Array
)的重新赋值只是将一个名称与另一个引用(指向另一个Object
类型)重新绑定。当您像在示例中那样改变Object
类型时,您仅仅是改变了它的属性,而不是底层引用。 - user6445533