配列の最後から n 個値を取得するときに arr.slice(-n) とすると n が 0 のとき期待しない値になる
タイトルどおり。
スタックから n 個 pop するときに
var args = stack.slice(-argc);
stack.length -= argc;
とかしてたんだけど、これだと argc が 0 のとき args が空の配列でなく stack 全体のコピーになってしまう。
これでハマった。
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
はてさて、どう直そうかなあ。
argc ? stack.slice(-argc) : [] か stack.slice(stack.length - argc) か。長いなあ。
短く書けないんだったら配列から n 個 pop する関数を作ってしまうか。 -> そうしました。
function aryPopN(ary, n) { var result = ary.slice(ary.length - n); ary.length -= n; return result; }