rest = a.slice(i, ?)

配列 ai 番目以降をコピーしたいとき、

a.slice(i)

と通常は第二引数を省略するが、状況に応じて切り替えたい場合は

a.slice(i, excludeLast ? -1 : x)

のように何か値を渡すことになる。この x を何にすべきか((無論 a.length とはしたくない))。splice痛い目にあっているので調べざるを得ない。

http://jsdo.it/satyr/slice_rest

void 0 1/0 9e9
IE8/Fx3 ng ok ok
Sf5/GC8 ok ok ok

案の定 JScriptSpiderMonkey が非ES的挙動を示す。

7. If end is undefined, let relativeEnd be len; else let relativeEnd be ToInteger(end).

http://sideshowbarker.github.com/es5-spec/#x15.4.4.10

9e9 安定である。