奇怪的输出[97,98] .map(String.fromCharCode)

Fen*_*eng 4 javascript ecmascript-5

这按预期工作

[97,98].map(function(x){String.fromCharCode(x)})
// [ 'a', 'b' ]
Run Code Online (Sandbox Code Playgroud)

但输出跟随线是意外的

[97,98].map(String.fromCharCode)
// [ 'a\u0000\u0000', 'b\u0001\u0000' ]
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 5

String.fromCharCode可以接受可变长度的参数,并将每个参数视为字符代码,以构建arguments.length长字符串字符.

map将几个参数传递给内部函数.第一个,显然是当前项目的价值.第二个是数组中的索引,它来自\u0000\u0001来自(添加更多字符代码,你得到\u0002,\u0003...).第三个参数是对正在遍历的数组的引用,该数组将转换为数字0.

资料来源:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map

很多以后编辑:另一种方法:

String.fromCharCode.apply(String, [97,98]);
// [ 'a', 'b' ]
Run Code Online (Sandbox Code Playgroud)