为什么String.fromCharCode()不能使用变量作为参数?

时间:2016-12-12 12:46:04

标签: javascript fromcharcode

我注意到String.fromCharCode()不能将变量用作参数。

以下是一些示例代码:

var x = atob('ODAsNjUsODMsODMsODcsNzksODIsNjgsOTUsNDgsNDk=');
console.log('\''+x.replace(new RegExp(',', 'g'), '\',\'')+'\'');
console.log(String.fromCharCode('\'' + x.replace(new RegExp(',', 'g'), '\',\'') + '\''));

现在这将评估为

'80','65','83','83','87','79','82','68','95','48','49'

这是String.fromCharCode()的正确参数链 因为这有效:

console.log(String.fromCharCode('80','65','83','83','87','79','82','68','95','48','49'));

为什么不接受变量作为参数?

我在这里做错了吗?

2 个答案:

答案 0 :(得分:2)

在:

var x = atob('ODAsNjUsODMsODMsODcsNzksODIsNjgsOTUsNDgsNDk=');
console.log(String.fromCharCode('\'' + x.replace(new RegExp(',', 'g'), '\',\'') + '\''));

'\''+x.replace(new RegExp(',', 'g'), '\',\'')+'\''生成一个字符串。这只是一个文字'80','65','83','83','87','79','82','68','95','48','49'。如果你把这个字符串传递给String.fromCharCode ......绝对不是你想要的。如何将JavaScript转换为一个号码?

String.fromCharCode('80','65','83','83','87','79','82','68','95','48','49')

这里传递多个参数。多个字符串。并且每个都可以很容易地转换成数字。

您可以做的只是将字符串拆分为,,然后展开生成的数组:(ECMAScript 6)

String.fromCharCode(...x.split(','));

答案 1 :(得分:1)

你可以传递一个数组:

String.fromCharCode.apply(null, ['80','65','83','83','87','79','82','68','95','48','49'])

这是一个类似的..同样的问题:

Can I pass an array into fromCharCode