簡體   English   中英

javascript匿名函數,可訪問創建者中的變量

[英]javascript anonymous function with access to variable in creator

我需要在成功函數中從循環訪問i變量。 我該怎么做?我可以將其傳遞給函數嗎?

function save(){
    var mods=model.things;
    for (i in mods) {
        var mod= mods[i];
        $.ajax({
            url: "duck"
            type: "put",
            data: JSON.stringify(mod),
            success: function(responce_json) {
                var j=i;   
            }
        });
    }
}

單程:

        success: (function(i) { return function(responce_json) {
            var j=i;   
        }})(i)

這使用立即調用函數表達式(IIFE)創建一個閉包,該閉包將捕獲i的當前值。

順便說一下, for...in ,許多JavaScript程序員都認為這是不好的作法,但如果您需要使用它,則可能至少應包括對hasOwnProperty的檢查

創建另一個將i作為參數的function ,從而為每次迭代創建一個本地副本

var f = function(i) { 
    var mod= mods[i];
    $.ajax({
        url: "duck"
        type: "put",
        data: JSON.stringify(mod),
        success: function(responce_json) {
            var j=i;   
        }
    });
}
for (iter in mods) {
    f(iter);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM