이 동작은 이상합니다.크롬이이 루프에서 내 변수를 선언하게 만드는 이유는 무엇입니까?
myObjects = [
{
name: 'List 1',
invitations: [
{ email: '[email protected]', stamp: '1234' },
{ email: '[email protected]', stamp: '4576' }
]
},
{
name: 'List 2',
invitations: [
{ email: '[email protected]', stamp: '5678' },
{ email: '[email protected]', stamp: '6789' }
]
},
]
내가 초대 배열이 특정 이메일 주소를 포함하는 개체를 필터링해야하는, 그래서 잘 작동하는이를하고있어 내가 숭고한에서 테스트 할 때 : I는 다음과 같습니다 객체의 배열을 가지고 텍스트 :
filteredObjects = myObjects.filter(obj => {
for (var invitation of obj.invitations) {
if (invitation.email == '[email protected]') return true;
}
});
: 나는 크롬에서 이것을 실행하려고하면
filteredObjects = myObjects.filter(obj => {
for (invitation of obj.invitations) {
if (invitation.email == '[email protected]') return true;
}
});
// [ { name: 'List 2', invitations: [ [Object], [Object] ] } ]
그러나, 나에게 (for 루프에 추가 된 "VAR"를 참고) 어떤 이유로 for 루프에서 변수를 선언 만들고있다
Uncaught (in promise) ReferenceError: invitation is not defined
내가 왜 이런 일을 이해하려면, 그리고 경우에 아마 쓸 수있는 더 좋은 방법이 : 나는 ("VAR"와) 변수를 선언하지 않으면 (10), 내 크롬 콘솔에서 오류가 발생 내 필터.
'초대장'을 선언하지 않은 경우 무엇을 말합니까? –
어딘가에 엄격하게 사용합니까? – dgrogan
전역 범위에 같은 이름의 다른 변수가 있는지 묻고 있습니까? 거기에, 그리고 난 충돌 문제가 아니 었는지 확인하기 위해 몇 가지 임의의 변수 이름을 시도했습니다. – Alan