Posting this to show you are correct about the max INDEX being 4294967294 since it is the max LENGTH -1 and the max LENGTH is 232-1
So from 0 to 4294967294 you have 4294967295 elements
All JS arrays start at 0
new Array(4294967295)
is the largest array you can define because you need to pass an unsigned int to the constructor Hence the largest index you can have is one less than that
MDN Array
arrayLength
If the only argument passed to the Array constructor is an integer between 0 and 232-1 (inclusive), this returns a new JavaScript array with its length property set to that number (Note: this implies an array of arrayLength empty slots, not slots with actual undefined values). If the argument is any other number, a RangeError exception is thrown.
Wikipedia
The number 4,294,967,295, equivalent to the hexadecimal value
FFFFFFFF, is the maximum value for a 32-bit unsigned integer in computing. It is therefore the maximum value for a variable declared as an unsigned integer
var arr = new Array(4294967294);
arr[arr.length-1]="one but last";
console.log("Length: "+arr.length,"Index = "+(arr.length-1)+": "+arr[arr.length-1]);
arr.push("Last");
console.log("Length: "+arr.length,"Index = "+(arr.length-1)+": "+arr[arr.length-1]);
arr.push("One too far");
console.log("Length: "+arr.length,"Index = "+(arr.length-1)+": "+arr[arr.length-1]);