我注意到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'));
为什么不接受变量作为参数?
我在这里做错了吗?
答案 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'])
这是一个类似的..同样的问题: