ECMAScript 5th の Arguments オブジェクト

まあ、"use strict";しろやハゲってことなんだろうけど...。

関数中にargumentがあるかどうかで挙動が変わるというものを発見してしまったのだ。
上記、jsdo.it でやっていることは

  1. パラメータ名で引数を参照
  2. 別関数を実行してarguments.calee.caller.arguments[0]を別の値にする
  3. パラメータ名で引数を参照
  4. (arguments[0]で引数を参照)

というもの。()書きは一方の関数のみ

arguments.calleeを使用するので"use strict"でないコードとなる。

ともかく、3番目の値がarguments[0]の有無で異なってくる。これは仕様通りなのか、バグなのか。とりあえず、Fx4とChrome(dev)ではそういう結果になった。

なんだか不思議。