JS 変数の値 (参照ではない) を関数に渡す方法
JavaScript などの動的言語では、変数は次のようになります。デフォルトでは参照によって渡されます。これは、関数内で変数に加えられた変更は、関数外の元の変数に反映されることを意味します。特定の状況では、この動作は望ましくないため、代わりに変数の値を関数に渡す必要がある場合があります。
最新のブラウザの場合は、let または const キーワードを使用してブロック スコープの変数を定義することを検討してください。
<code class="js">for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i)); }</code>
このアプローチにより、ループの各反復で i 変数の新しいスコープが作成され、すべてのリスナーがループの最後で results.length の値を使用する問題が回避されます。
古いブラウザを使用している場合は、変数を関数パラメータとして渡して、ループの反復ごとに別のスコープを作成します。
<code class="js">for (var i = 0; i < results.length; i++) { (function (i) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); })(i); }</code>
匿名関数を使用し、変数でそれを呼び出すことにより、最初の引数として、効果的に値渡しし、クロージャを作成します。これにより、各リスナーが i 変数の独自のコピーを持ち、リスナーの作成時の値を参照するようになります。
以上がJavaScript 変数の値 (参照ではない) を関数に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。