function foo(x) { Object.defineProperty(arguments, 0, {configurable: true, enumerable: true, writable:true, value:42}); return [x, arguments[0], arguments] } var result = foo(1); if (result[0] !== 42) throw new Error(); if (result[1] !== 42) throw new Error(); if (Array.prototype.join.call(result[2], ",") != "42") throw new Error(); var array = []; for (var s in result[2]) array.push(s); if (array.join(",") != "0") throw new Error(); if (Object.keys(result[2]).join(",") != "0") throw new Error();