JavaScript ASCII到文本

时间:2014-11-04 17:25:53

标签: javascript nan

我想知道是否可以将JavaScript蝙蝠侠笑话中的“蝙蝠侠”文本更改为ASCII,然后将其转换并将其显示在浏览器中

原来的笑话是

javascript:Array(16).join("lol" - 1) + "Batman"

可以改为

javascript:Array(16).join("lol" - 1) + [66, 97, 116, 109, 097, 110].forEach(function(e) { document.write(String.fromCharCode(e)); } );

其中[66,97等]是蝙蝠侠的ASCII码。这会失败,因为文档对象不存在于空的浏览器窗口中。

(PS如果不合适,可以随意删除,只是为了好玩)

2 个答案:

答案 0 :(得分:1)

您实际上并不需要为数组使用任何类型的循环或迭代器,String.fromCharCode实际上会接受您想要的任意数量的字符。所以这将很好地工作:

javascript:Array(16).join(-'.') + String.fromCharCode(66, 97, 116, 109, 097, 110);

但是,如果你想为数组的每个元素调用String.fromCharCode,你可以。可以使用Function.prototype.apply调用每个JavaScript函数,它将为每个数组元素运行函数:

javascript:Array(16).join("lol" - 1) + String.fromCharCode.apply(this,[66, 97, 116, 109, 097, 110]);

此外,"lol" - 1的目的是尝试创建一个错误的数字(NaN或非数字)。如果您想进一步混淆事物,可以对非数字字符串使用任何数学运算。例如:

javascript:Array(16).join(-'.') + String.fromCharCode.apply(this,[66, 97, 116, 109, 097, 110])

因为-'.'被互穿为0 - '.',它没有任何意义所以它是NaN。

答案 1 :(得分:0)

你可以这样做:

javascript:var str='';[66, 97, 116, 109, 097, 110].forEach(function(e) { str+= (String.fromCharCode(e)); } ); Array(16).join("lol" - 1) + str; 

或者:

javascript:Array(16).join("lol" - 1) + [66, 97, 116, 109, 097, 110].map(function(e) { return (String.fromCharCode(e)); }).join('');