これは期待どおりに機能します
[97,98].map(function(x){String.fromCharCode(x)})
// [ 'a', 'b' ]
しかし、出力は次の行です予期しない
[97,98].map(String.fromCharCode)
// [ 'a\u0000\u0000', 'b\u0001\u0000' ]
これは期待どおりに機能します
[97,98].map(function(x){String.fromCharCode(x)})
// [ 'a', 'b' ]
しかし、出力は次の行です予期しない
[97,98].map(String.fromCharCode)
// [ 'a\u0000\u0000', 'b\u0001\u0000' ]
String.fromCharCode
可変長の引数を受け入れることができ、それぞれを文字コードとして扱い、文字列arguments.length
の長さを構築します。
map
内部関数にいくつかの引数を渡します。1 つ目は、明らかに、現在のアイテムの値です。2 番目は、配列内のインデックスです。これは、\u0000
と\u0001
が由来する場所です (さらに文字コードを追加すると\u0002
、\u0003
... が得られます)。3 番目の引数は、トラバースされる配列への参照であり、数値に変換され0
ます。
ソース: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map
はるかに後で編集:別のアプローチ:
String.fromCharCode.apply(String, [97,98]);
// [ 'a', 'b' ]
a2 = [97,98].map(function(x){return String.fromCharCode(x)});
alert(a2);
a2 = [97,98].map(String.fromCharCode);
alert(a2);
Linux 上の Firefox13 では、どちらも "a,b" をアラートします。最初の関数には return ステートメントがありませんでした。