循环闭包返回函数而不是字符串

时间:2014-02-08 00:49:24

标签: javascript closures

我正在尝试在for循环中创建一个闭包,但是,它一直在返回函数而不是字符串。

$(function() {
    var addID = function(id) {
        var temp = id;
        return function() {
            return "http://localhost:3000/board/raptrex/" + temp;
        }
    };

    $.get("http://localhost:3000/board/raptrex", function( data ) {
        console.log(data);
        var $deleteUL = $('#delete');
        for (var i = 0; i < data.length; i++) {
            var url = addID(data[i]._id);

            console.log(url);

            var $item = $('<li></li>').text(data[i].name).click(function() {
                $.ajax({
                  type: "DELETE",
                  url: url
                })
                  .done(function( msg ) {
                    alert( "Deleted: " + msg );
                  });
            });
            $deleteUL.append($item);
        }
    }); 
});

当我点击我的li元素时,这会返回http://localhost:3000/function%20()%20{%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22http://localhost:3000/board/raptrex/%22%20+%20temp;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20}

1 个答案:

答案 0 :(得分:2)

您正在使用addID返回函数而不是字符串。请尝试以下方法:

var addID = function(id) {
    var temp = id;
    return "http://localhost:3000/board/raptrex/" + temp;
};