前言

分析字节跳动某网站发现了一个用JavaScript生成随机字符串的方法,分析了一下

分析

Math.random().toString(36).substr(2)

其中的toString(36)是什么意思呢?
MDN上说,Number.prototype.toString()有一个可选的参数radix,就是进制:

radix:指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10

如果转换的基数大于10,则会使用字母来表示大于9的数字,比如基数为16的情况,则使用a到f的字母来表示10到15。

也就是说,如果radix是36,就会把数字表示为由0-9, a-z组成的的36进制字符串。

不用管36进制是什么,只要知道,由Math.random产生的数字会被表示成看起来随机的字符串,类似hg7znok52x,就像10表示成二进制是1010一个道理。

这里主要目的是学习toString(),实际上这个随机字符串并不安全,不能用于实际开发中。

最后修改:2021 年 08 月 18 日
如果觉得我的文章对你有用,请随意赞赏