如果我有一个对象数组,并循环遍历它们为每个对象分配一个属性值,WebStorm警告我:
分配给基元的值将丢失
但是,在控制台中进行测试时,我并没有"丢失"任何值.
这只发生在循环在函数内部时.
以下是此错误的示例:
let people = [
{
name: 'Foo',
age: 21,
surname: 'FooBar'
},
{
name: 'Bar',
age: 51,
surname: 'FooBar'
}
];
Run Code Online (Sandbox Code Playgroud)
没有函数包装器:
people.forEach(function (person) {
person.surname = 'Baz'; // No error. Works in console.
});
Run Code Online (Sandbox Code Playgroud)
使用函数包装器:
function changeSurname(people) {
people.forEach(function (person) {
person.surname = 'Baz'; // Error warning me that value assigned to primitive will be lost.
});
}
changeSurname(people);
Run Code Online (Sandbox Code Playgroud)
这两个都在控制台中产生相同的输出(姓氏改为'baz').
我认为这与对象引用和person指向的内容有关,但我不确定究竟是什么.
为什么我看到这个错误?
WebStorm试图拯救我的潜在错误是什么?