2017-01-19 11 views
-1

私はjavascriptを学んでおり、forEachの機能でthisArgを設定することについて私がドキュメントで読んだことを明確にしたかったのです。私のrecycleObject関数では、valueは新しいオブジェクトです。 thisArgパラメータを利用して配列のさまざまな要素にアクセスできると思っていましたが、Object型でもUncaught ReferenceError: value is not definedになっています。forEachでthisArgとして値を設定できますか?

function recycleObject(date){ 
    console.log(date) //date is a number like 1999 
    recycle.forEach(function(value){ //each element processed in array 
     console.log(typeof(value)) 
     if (this.date==date){return this} 
    },value) //this value <--value is not defined 
} 

Mozillaのドキュメントはthisは、実行時に設定することができないと言います。これはここの問題ですか?回避策がありますか?多くのおかげで

It can't be set by assignment during execution, and it may be different each time the function is called.

+0

* "Uncaught ReferenceError:valueはObject型であっても定義されていません。" * 'value'はコールバック内にのみ存在します。コールバックの* outside *を使用しようとしています。 –

答えて

1

は、あなたがここにReferenceErrorを得ている理由は、あなたがそれを使用しているいる範囲の値を定義していないということです。 valueは、forEach関数に渡す匿名関数内に作成されますが、そのクロージャの外側で参照されているため、参照するものはありません。

関連する問題