ECMAScript 5th の Arguments オブジェクト
まあ、"use strict";
しろやハゲってことなんだろうけど...。
関数中にargument
があるかどうかで挙動が変わるというものを発見してしまったのだ。
上記、jsdo.it でやっていることは
- パラメータ名で引数を参照
- 別関数を実行して
arguments.calee.caller.arguments[0]
を別の値にする - パラメータ名で引数を参照
- (
arguments[0]
で引数を参照)
というもの。()書きは一方の関数のみ
arguments.callee
を使用するので"use strict"でないコードとなる。
ともかく、3番目の値がarguments[0]
の有無で異なってくる。これは仕様通りなのか、バグなのか。とりあえず、Fx4とChrome(dev)ではそういう結果になった。
なんだか不思議。