Закрытие Javascript?

Способ № 1

function transform(ar) {
    var alStr = [];
    for(var i=0; i<ar.length; i++) {

        alStr[i] = (function(v) {
            return (function() {
                return v;
            });
        }(ar[i]));
    }

    return alStr;
}

var a = ["a", 24, { foo: "bar" }];
var b = transform(a);
a[1];
b[1]();

Способ № 2

function transform(ar) {
    var alStr = [];
    for(var a in ar) {
        var O = function() {
            return a;
        }
        alStr.push(O);
    }
    return alStr; 
}

var a = ["a", 24, { foo: "bar" }];
var b = transform(a);
a[1];
b[1]();

Вышеупомянутые методы используются для преобразования объектов массива в отдельные функции, которые при исполнении возвращают конкретный объект массива. Хотите знать, почему метод № 1 работает, а метод № 2 - нет.

Ответы на вопрос(2)

Ваш ответ на вопрос