을 잃고, 각각에 속성을 할당하는 그들을 통해 루프는 WebStorm 나 경고한다 : 가치는 내가 객체의 배열이있는 경우
을 잃게됩니다 원시적에 할당값
그러나 콘솔에서 테스트 할 때 값을 "잃지"않습니다.
이것은 루프가 함수 안에있을 때만 발생합니다.
이하이 오류의 예 :
가function changeSurname(people) { people.forEach(function (person) { person.surname = 'Baz'; // Error warning me that value assigned to primitive will be lost. }); } changeSurname(people);
이들 모두 콘솔에서 동일한 출력을 생성 :
people.forEach(function (person) { person.surname = 'Baz'; // No error. Works in console. });
함수 래퍼 : 함수 래퍼없이
let people = [ { name: 'Foo', age: 21, surname: 'FooBar' }, { name: 'Bar', age: 51, surname: 'FooBar' } ];
(성은 'baz'로 변경됩니다).
나는 이것이 객체 참조와 어떤 관련이 있다고 가정하고 무엇을
person
이 가리키는 지 정확히 추측하고있다.왜이 오류 메시지가 표시됩니까?
WebStorm은 나를 구하기 위해 어떤 잠재적 인 버그가 있습니까?
let은 변수를 내부 객체의 기본 유형으로 만드는 상수로 만듭니다. 변수를 선언 할 때'var'을 사용해서는 안된다. –
@AkshayKhandelwal 나는 그것이 사실이라고 확신하지 않는다. 'var'을 사용해도 여전히 오류가 발생합니다. 'const'는 일을 일정하게 만듭니다.'let'은 변수를 블록 범위로 범위 지정합니다. –
@MattLishman, IDE는 전달 된 인수가 객체에 대한 참조이고'forEach-loop'에서 값이 변경/손실된다는 것을 경고합니다. – Rayon