谁能解释为什么 Chrome 会给我这个奇怪的结果?定义,
var chars = [72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33];
这很好用:
console.log(String.fromCharCode.apply(null,chars));
Hello, world!
但是
console.log(chars.map(String.fromCharCode));
返回
["H", "e", "l", "l", "o", ",", " ", "w", "o", "r ", "l↵", "d", "!"]
我在 IE 中没有遇到这种行为。 "r "
是制表符。似乎无论输入数组/字符串是什么,Chrome 都会在同一位置执行此操作。
最佳答案
回调到[].map()
接收三个参数:当前数组项值、它的索引和数组本身。 String.fromCharCode
是可变参数函数,因此它将所有参数解释为字符代码。
也就是说,在第一次迭代中,您可能期望得到 String.fromCharCode(72)
(即 'H'
),但实际上您是获取 String.fromCharCode(72, 0, chars) === 'H\x00\x00'
。
您可以传递一个回调函数来确保只有数组值被映射到字符:
chars.map(function(charCode) {
return String.fromCharCode(charCode);
});
关于JavaScript + Chrome : String. fromCharCode 给出无关字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153142/