定义一个cached函数作为存储变量的中间体:
function cached(fn){ var cache = Object.create(null); return function(str){ var hit = cache[str]; return hit || (cache[str] = fn(str)) } }
在cached函数中,定义了一个cache的内部变量,该变量只能在其内部,或者其子函数内部被访问。
var hyphenateRE = /\B([A-Z])/g; var hyphenate = cached(function (str) { return str.replace(hyphenateRE, '-$1').toLowerCase() });
然后定义一个驼峰转连接符的方法:
在我们调用 hyphenate 方法的时候,会首先在其cache对象中查找是否有缓存的值,如果有直接返回,如果没有则执行处理函数并保存到缓存中;
hyphenate 函数可以理解为:
var hyphenate = function(str){ // cache会作为该函数的一个闭包对象存在其内部作用域中(继承其父函数cached的作用域) var hit = cache[str]; if(hit){ return hit }else{ return (cache[str] = str.replace(hyphenateRE, '-$1').toLowerCase()) } }
标签:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!