这按预期工作
[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
将几个参数传递给内部函数。首先,显然是当前项目的价值。第二个是数组中的索引,它是\u0000
and\u0001
的来源(添加更多字符代码,你会得到\u0002
, \u0003
...)。第三个参数是对正在遍历的数组的引用,它被转换为 number 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”。第一个函数缺少返回语句。