0
私はforEach
を使用しましたが、やや異なった動作をします。通常、要素の新しい値を割り当てるだけですが、今回は機能しませんでした。ネストされた配列で正常に動作しないことがありますか?Array.prototype.for要素の再割り当て
今スニペットのために:
//works
this.array[0].forEach((ele,ind,arr)=>{
arr[ind] = 'E'; //works fine
});
//fails
this.array[0].forEach((ele,ind,arr)=>{
console.log(ele); //element is empty
ele = 'E';
console.log(ele); //element is 'E'
});
Iは、要素自体ではなく、参照によって値によってコピーされているものと考えられます。
私はMozilla Docsを読んだが、それについては何も見つかりませんでした。
これは非常に大胆な発言です。それはまさに価値のあるものではありません。値が参照として(配列の場合のように)渡されると、参照渡しとして動作します。つまり、itemを変更すると配列に伝播します。配列の参照を変更すると、値渡しとして動作します。それは混乱です。 – lustoykov
** ** **参照を渡すと** **参照とパスを混同しないでください。しかし、あなたが正しいです、参照を渡すと、JavaScriptが参照渡しだった場合と同様の効果が得られます。それでも、JavaScriptは厳密には値渡しです。 –
しかし、私の理解では、値渡しはオブジェクト/配列のコピーを作成し、参照を全く渡さないでしょう。あなたがリンクしたwikiから >関数呼び出しに渡されたものは、関数が – lustoykov