【问题标题】:JavaScript - fromCharCode is not a function?JavaScript - fromCharCode 不是函数?
【发布时间】:2018-02-21 10:18:41
【问题描述】:

我正在尝试将十进制转换为这样的文本:

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

有人知道我哪里出错了吗?

【问题讨论】:

  • 这是 String.fromCharCode(number).check this w3schools.com/jsref/jsref_fromCharCode.asp
  • 因为它不是一个函数,所以它不是所有字符串的原型,它存在于字符串构造函数中
  • 你希望传递给这个函数什么,你期望得到什么?请举个例子
  • @DominicTobias 我已经用一个我想要实现的示例编辑了我的问题

标签: javascript type-conversion decimal converter


【解决方案1】:

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

因为 fromCharCode() 是 String 的静态方法,所以您总是将其用作 String.fromCharCode(),而不是作为您创建的 String 对象的方法。

你可以传入一个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]));

【讨论】:

  • 对我来说,使用 Firefox 62.0.3,甚至代码 "var txt=String.fromCharCode(65,65,65,65);"导致错误消息“TypeError: String.fromCharCode is not a function”。
猜你喜欢
  • 2014-04-06
  • 2012-12-06
  • 2021-06-05
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 2018-03-02
相关资源
最近更新 更多