JavaScript + Chrome : String. fromCharCode 给出无关字符?

标签 javascript google-chrome

谁能解释为什么 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/

相关文章:

c# - 当我在表单 onsubmit 中有函数时,Ajax 不起作用

javascript - 文本区域自动滚动到底部

javascript - 货币的 JS Intl.NumberFormat 不能有 maximumFractionDigits 0

javascript - Chrome 浏览器无法浏览文件

javascript - Twitter Bootstrap 2.3 Typeahead 搜索元素名称与字符 & 在谷歌浏览器中

javascript - 出于性能原因检测 Trident 6+

javascript - 带有 Node.js 的 jQuery 数据表

javascript - 获取 iFrame 中 Ajax 函数的结果

css - PHP/HTML/CSS - 如果是 FireFox,是 Chrome 还是 Safari

angular - 如何使用 Angular [innerHTML] 修复 TrustedHTML 分配错误