首頁 > web前端 > js教程 > 主體

將參數傳遞給循環內的函數時如何保留變數值?

Linda Hamilton
發布: 2024-10-24 22:00:30
原創
253 人瀏覽過

How to Preserve Variable Values When Passing Arguments to Functions Inside Loops?

向函數傳遞參數時保留變數值

使用JavaScript 循環時,您可能會遇到需要保留以下值的情況將變數傳遞給函數時。當變數的值在循環執行期間可能發生變化時,就會出現這種情況,從而導致事件偵聽器出現意外行為。

請考慮以下範例:

<code class="js">for (var i = 0; i < results.length; i++) {
    marker = results[i];
    google.maps.event.addListener(marker, 'click', function() {
        change_selection(i);
    });
}
登入後複製

在此程式碼中,事件偵聽器是附加到循環內的每個標記。但是,當觸發偵聽器時,它使用 i 的最終值,即循環結束時結果陣列的長度。這種行為是不可取的,因為它會導致所有事件偵聽器使用相同的值。

要為每個偵聽器保留i 的值,您可以使用區塊範圍變數(在現代瀏覽器中)或閉包(在

現代瀏覽器(ES6 ):

<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>
登入後複製

使用let 關鍵字建立一個只能在循環內存取的區塊範圍變數。 🎜>

舊版瀏覽器:

<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 作為第一個參數建立一個閉包。 ,確保每個事件偵聽器為其特定標記使用正確的值。

以上是將參數傳遞給循環內的函數時如何保留變數值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!