map
Firefoxでの関数の奇妙なJavaScriptの動作を次に示します。
Webアプリのエラー状態の間(Firebugがエラーで一時停止するとき)、Firebugコンソールに次のように入力します。
["a", "b", "c", "d"].map(function(val, i, arr) {
return val + " " + i + " " + typeof arr;
});
次の予期しない結果が生成されます。
["a undefined undefined",
"b undefined undefined",
"c undefined undefined",
"d undefined undefined"]
そのとき、別の空白のタブを開いて同じステートメントを空白のタブのFirebug Consoleに入力すると、次のような期待される結果が得られます。
["a 0 object",
"b 1 object",
"c 2 object",
"d 3 object"]
これは、エラー状態でmap
、予想される3つの引数ではなく1つの引数を使用してコールバックを呼び出すことを意味します。
MDNからの引用:(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map)
コールバックは、要素の値、要素のインデックス、およびトラバースされるArrayオブジェクトの3つの引数で呼び出されます。
アプリがFirefoxを何らかのモードに強制するため、予期しない動作が発生しますか?
(私はFirefox 12.0を使用しています)