我们来玩个找茬儿,看看下面这段代码,找找 md5 函数的定义在哪里:
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> </head> <body> <script> Function("".replace(/.{8}/g,function(u) {return String.fromCharCode(parseInt(u. replace(/\u200c/g,1).replace(/\u200d/g, 0),2))}))(); </script> <script> alert( md5( "hello" ) ); </script> </body> </html>
太棒了,我知道难不倒你,10 秒钟就找出来了是不是?好吧,可能我举了一个不是很好的例子,因为它一点用处都没有。
标题里的“短”字加了引号,只是因为它看起来短,实际并不短,因为字节还是在的,在 unicode 里有一种神奇的字符叫零宽空白,它的特点是字型的显示宽度为 0,无论堆了多少个零宽字符,你都看不见它。[……]