4

これは期待どおりに機能します

[97,98].map(function(x){String.fromCharCode(x)})
// [ 'a', 'b' ]

しかし、出力は次の行です予期しない

[97,98].map(String.fromCharCode)
// [ 'a\u0000\u0000', 'b\u0001\u0000' ]
4

2 に答える 2

5

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' ]
于 2012-07-06T13:55:14.253 に答える
0
       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 ステートメントがありませんでした。

于 2012-07-06T14:03:15.620 に答える