var max for (max = 2; max < 100; ++max) { var arr = []; // force a sparse array Object.defineProperty(arr, "0", { get: function () { return 0; }, configurable: true }); var i; var j; for (i = 1; i < max; ++i) arr[i] = i; for (i = 1; i < max; i += 2) { delete arr[i]; for (j = 0; j < max; ++j) { if (j <= i && (j %2)) { if (arr[j] != undefined) throw "err1" } else { if (arr[j] != j) throw "err2" } } } } for (max = 2; max < 100; ++max) { var arr = []; // force a sparse array Object.defineProperty(arr, "0", { get: function () { return 0; }, configurable: true }); var i; var j; for (i = 1; i < max; ++i) arr[i] = i; for (i = 0; i < max; i += 2) { delete arr[i]; for (j = 0; j < max; ++j) { if (j <= i && !(j %2)) { if (arr[j] != undefined) throw "err1 " + i + " " + j + " " + arr[j] } else { if (arr[j] != j) throw "err2 " + j } } } }