0
var x = String.fromCharCode(65);

console.log(x);  //returns "A"

它接受一个整数并返回相应的字符(字符串),但该字符的代码与输入完全相同!

这里的引擎盖下会发生什么?它真的只是返回它接受的东西吗?还是有任何额外的逻辑?

4

3 回答 3

2

看看@spidermonkey源代码

fromCharCode 在jsstr.cpp中定义

它使用 aunitStringTable进行映射。该表是通过预处理器指令定义的......

于 2013-03-13T20:12:33.697 回答
0

我相信它只是维护一个 ASCII 代码字典并为输入整数 {key} 返回字符 {value}

于 2013-03-13T19:14:38.597 回答
0

fromCharCode用于将 Unicode 数字转换为字符。Unicode65是字符A。所以String.fromCharCode(65)返回A

What happens under the hood here?

实现可能是HashMap键值对,其中 Unicode 值映射到相应的字符,或者它可能是接受和返回switch的语句。Unicodecharacter

使用伪代码实现switch

function fromCharCode(*args)
{
   return args.map(unicodeToChar).join('')
}

function unicodeTochar(unicode)
{
   switch(unicode)
   {
      //something

      case 65:
        return 'A'
      case 66:
        return 'B'

     //something
   }
}
于 2013-03-13T19:18:41.870 回答