发动态
综合 最新发布 最新回复
图文
列表
打卡签到
畅聊专区
打卡打卡
畅聊专区
3D模型比赛求点赞
各位大佬求点个赞~ https://model.jlc-3dp.cn/modelDetail/8513b2ce4eb34eb3a8af61e33a261552.html 非常感谢了
畅聊专区
打卡签到
畅聊专区
嘉立创3D打印
【嘉立创3D打印】免费打样,全国包邮!打印不花一分钱,你也来体验下吧 https://www.jlc-3dp.cn/f删p/Auhrmd2/1访问链接领券免费打印
畅聊专区
[奋斗][玫瑰]
畅聊专区
打卡 签到
畅聊专区
打卡 签到
畅聊专区
打卡 签到
畅聊专区
打卡 签到
畅聊专区
打卡 签到
畅聊专区
打卡签到
畅聊专区
打卡签到
畅聊专区
打卡签到
畅聊专区
打卡签到
畅聊专区
打卡签到
畅聊专区
打卡打卡
畅聊专区
打卡签到
畅聊专区
前言做过电商 PC 端开发的兄弟估计都懂:经常得弄个「绝不会跟别的重样的编号(ID)」—— 比如给弹窗、临时加的商品条目、页面里动态蹦出来的元素做标识,免得代码把东西搞混。这事看着好像随手就能写,但真要做到百分百不重复,可比想的要坑。今天就唠唠大伙常踩的俩坑,再给你说个浏览器自带的、一行代码搞定的靠谱法子。一、先踩第一个坑:拿时间戳加随机数凑数好多人(不管是刚入门的还是干了俩年的)第一反应都是:把当前时间加个随机数不就行了?比如会写这么一段代码: function generateNaiveId() {     return Date.now().toString(36) + Math.random().toString(36).substr(2); } 出来的结果大概是l6n7f4v2am50k9m7o4这种,看着好像既有时间的 “独一份”,又有随机数的变化,挺好用?但真放到正经的生产环境里,这就是个定时炸弹:时间戳精度不够Date.now()只能精确到毫秒,要是在同一毫秒里连续调用两次这个函数 —— 比如用户点按钮点的特别快,或者页面一下子要生成好几个 ID—— 那 ID 的前半段就会完全一样随机数不靠谱Math.random()那玩意生的不是啥 “靠谱随机数”,运气背的时候,短时间内可能跑出一模一样的序列说白了,这种法子也就用在半天用一次的场景里凑活,真要讲 “绝对不重复”,差得远了。二、再踩第二个坑:用自增的计数器还有人想的更简单:整个全局的数字,每次生成 ID 就把数字加 1,从 0 开始往上排不就得了?但这个法子的问题更离谱:浏览器是 “没记性” 的,用户一刷新页面,这个计数器直接就归零重来了要是用户开了俩同款页面,每个页面的计数器都是从零开始算,生成的 ID 会直接撞车机会技术大厂,前端-后端-测试,全国各地等均有机-会,感兴趣可以试试;待遇和稳定性都还不错~三、别瞎折腾了:用浏览器自带的正经法子其实现在的现代浏览器(还有 Node.js14 以上的版本),早就给咱们内置了靠谱的工具 ——crypto.randomUUID(),一行代码就能生成绝对靠谱的唯一 ID: const uniqueId = crypto.randomUUID(); 出来的结果是这种格式:3a6c4b2a-4c26-4d0f-a4b7-3b1a2b3c4d5e为啥说这个是王者?基本不可能撞号这个 ID 是用 122 位的随机数生成的,能组合出来的数字多到离谱 —— 比地球上的沙子总数还多,撞号的概率约等于你连续中三次头奖随机数够安全它用的是浏览器里专门搞加密的随机数生成工具,不是Math.random()那种随便凑的,没法被轻易猜到大家都认生成的是全球通用的标准格式,不管是后端存数据库、还是和别的系统对接,都能直接用省心还高效不用装任何第三方的库,浏览器自带的,调用起来贼快而且现在主流的新浏览器都支持这个方法:Chrome92 以上、Firefox90 以上、Safari15.4 以上都能用,要是你做的是新项目,直接用这个就行,再也不用自己瞎写凑数的 ID 生成器了。——转载自:尽欢i
踩过坑才懂:前端生成唯一 ID,别用 Date.now ()了!一行代码搞定
畅聊专区
打卡 签到
畅聊专区
在这里你可以分享工作中的经验与挑战,探讨生活的点滴与感悟,交流对人生的思考与展望,以及分析时事热点背后的意义与影响,快来畅所欲言吧~
推荐话题 换一批
#DIY设计#
#嘉立创PCB#
#嘉立创3D打印#
#嘉立创免费3D打印#
#2025年度项目秀#
#ESP8266/32#
#技术干货#
#2025年度踩坑日记#
查看更多热门话题
打赏记录
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区