function f1() { var a = new Int32Array(50); for (var i=0; i<100; i++) { var x = a[i]; assertEq(typeof x, i < a.length ? "number" : "undefined"); } var b = new Float32Array(50); for (var i=0; i<100; i++) { var x = b[i]; assertEq(typeof x, i < b.length ? "number" : "undefined"); } } f1(); function f2() { // Test that values on the prototype are ignored, // even for OOB accesses. This behavior is new // with ECMA 6 (see bug 829896). Object.prototype[50] = 4.4; Object.prototype[55] = Math; var a = new Int16Array(50); for (var i=0; i<100; i++) { var x = a[i]; if (i < a.length) assertEq(x, 0); else assertEq(x, undefined); } } f2();