JavaScript - fromCharCode 不是函数?

JavaScript - fromCharCode is not a function?

我正在尝试将十进制转换为文本,如下所示:

function decimalToText(str){
    var arr = [];
    for (var i = 0, l = str.length; i < l; i ++) {
      var text = str.fromCharCode(i);
      arr.push(text);
    }
    return arr.join('');
}

所以我想将'104 101 108 108 111 32 119 111 114 108 100'转换为'hello world',例如

但我一直收到 Uncaught TypeError: str.fromCharCode is not a function

有人知道我哪里错了吗?

你很接近。如果您看一下 fromCharCode() 的文档,您首先会发现您调用它的方式不正确

Because fromCharCode() is a static method of String, you always use it as String.fromCharCode(), rather than as a method of a String object you created.

可以传入一个unicode字符数组,循环遍历,例如:

function decimalToText(unicodeArray){
    var arr = [];
    for (var index in unicodeArray) {
      var text = String.fromCharCode(unicodeArray[index]);
      arr.push(text);
    }
    return arr.join('');
}

console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));

或者更干净(无循环),您可以使用 apply function

function decimalToText(unicodeArray){
   return String.fromCharCode.apply(null, unicodeArray);
}

console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));

或者在 ES6 中你可以使用 spread operator

function decimalToText(unicodeArray){
   return String.fromCharCode(...unicodeArray);
}

console.log(decimalToText([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]));