この動作は奇妙です。Chromeでこのループで変数を宣言するのはなぜですか?
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' }
]
},
]
私は招待状の配列は、特定の電子メールアドレスが含まれるオブジェクトをフィルタリングする必要があるので、私はこれをやっている、私は崇高でそれをテストしたときに素晴らしい作品:私はこのようになりますオブジェクトの配列を持っていますテキスト:
filteredObjects = myObjects.filter(obj => {
for (var invitation of obj.invitations) {
if (invitation.email == '[email protected]') return true;
}
});
:私はChromeでこれを実行しようとした場合
filteredObjects = myObjects.filter(obj => {
for (invitation of obj.invitations) {
if (invitation.email == '[email protected]') return true;
}
});
// [ { name: 'List 2', invitations: [ [Object], [Object] ] } ]
しかし、私が(ループのために追加された「VAR」に注意してください)何らかの理由で、forループで変数を宣言することです
私は(「VAR」との)変数を宣言しない場合、私は私のクロームコンソールにエラーが表示されます。
Uncaught (in promise) ReferenceError: invitation is not defined
私はこれが起こっている理由を理解したい、そしておそらく書くためのより良い方法があるかどう私のフィルター。
「招待状」を宣言していない場合、それは何を参照していますか? –
どこか厳密に使用していますか? – dgrogan
グローバルスコープに同じ名前の別の変数があるかどうか尋ねていますか?そこにはありません、私はそれが衝突の問題ではないことを確認するためにいくつかのランダム変数名を試してみました。 – Alan