2009年11月18日

JavaScript: argumentsは配列じゃない、配列のメソッドを使うには

argumentsは配列じゃないため、配列のメソッドは

使えません。ということは本を読んだとき当たり前だと思ったんですが、

実際コードに落としたときは

自然とargument.slice()を書いちゃいました。

argumentsで配列のメソッドを使うには

Array.prototype.<配列のメソッド>.call(arguments,<パラメータ>)

```js Array.prototype.slice.call(arguments, 2) ```

上記の意図としてはarguments.slice(2)の表現に近いです。

argumentsはarray-likeオブジェクト

ここでちょっとargumentsの基本知識を復習します。

length属性もあるし、[]でindex指定のオブジェクトを参照できますけど、

argumentsは配列に似ているオブジェクトだけです。

予約語

Technically, argumentsは予約語ではないですが、

予約語として認識してよいです。

つまりargumentsという変数は作成しないでってことです。


```js function foo(x){ alert(x); var arguments; arguments[0] = null; //xの値が変更されちゃう alert(x); // null が出力される } ```
callee Property

Refers to the function that is currently being executed.

今実行中のファクションを参照しています。

```js function(x) { if (x <= 1) return 1; return x * arguments.callee(x-1); } ```
Share on Twitter Share the post
Qihuan Piao

朴 起煥

東京で働いている「外人歴」9年のソフトウェア「ライター」。いつの間にか納豆が食えるようになり、これで日本に慣れきったと思いきやまだまだ驚きが続いてる。読んだり書いたりするのが好きで、自身の経験や本から得た「何か」をここに書き出してる。最近古本屋にハマってる。

他にも英語中国語で書いてます、よろしければチェックしてみてください。