首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js 函数柯里化(Currying)

    原文链接:https://blog.spiritling.cn/posts/c0f17b1f/ 在计算机科学中,柯里化(Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数...从一道面试题谈谈函数柯里化从一道面试题谈谈函数柯里化 题目:使用 js 实现 add(1)(2)(3)(4) 返回 10 函数柯里化要求多个参数转为单一参数,所以相当于 function add()...addCurrying(1)(2)(3)(4) // => /* ƒ (value2) { result.push(value); return _add; } */ 重写内置函数返回结果 上面的代码虽然已经获取到所有的参数...当然有了,在 js 中函数是有原型链的,所以每个函数都继承了基本的一些方法。 当你定义一个函数后,你如果打印时只输入函数名,并不执行,则函数内部信息就被打印出来。...结束 通过上面的研究,解决一个函数柯里化问题。

    2.9K20

    js 高阶函数之柯里化

    博客地址:https://ainyi.com/74 定义 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术...const sum = currying(add) sum(1, 2)(3) // 未真正求值,收集参数的和 sum(4) // 未真正求值,收集参数的和 sum() // 输出 10 上面的代码理解...call / apply 直接执行有所不同 动态创建函数 有一种典型的应用情景是这样的,每次调用函数都需要进行一次判断,但其实第一次判断计算之后,后续调用并不需要再次判断,这种情况下就非常适合使用柯里化方案来处理...function (type, el, fn) { // 关键 el.attachEvent('on' + type, fn) } } })() 上面这种实现方案就是一种典型的柯里化应用...始终将 Object.prototype.toString 设置为传入参数,其实等价于 Object.prototype.toString.call() 实现 Currying 函数 可以理解所谓的柯里化函数

    3.8K40

    格子里的低代码

    你没看错,SPL,Structured Process Language,就是这样一种写在格子里的开源程序设计语言,专门用于处理结构化数据。...我们知道,几乎所有编程语言都是写成文本的,那写在格子里的 SPL 是什么样子呢?写在格子里的代码又有哪些不同呢?我们先一睹 SPL 的编程环境。SPL 特性格子代码中间部分就是 SPL 的网格代码了。...把代码写到格子里有什么好处呢?我们编程时总要用到中间变量,也就要给变量起个名字,但在 SPL 中经常是不需要的。...而且,当某格处理细碎任务的代码很长时,代码也只会占一个格子,不影响阅读整个代码的结构(不会让某个格子里太长的代码写出格子而影响到右边和下边的代码阅读)。相比之下文本代码就得全显示出来而没有这个好处了。...集合化是语法形式,对应代码的繁度;离散性是数据模型,对应代码的难度;缺失集合化的 Java 写出来的代码很繁,缺失离散性的 SQL 写出来的代码倒不见得很长,但是会很绕,难度变大。

    77210

    Next.js 里想静默打印,别往 Server Action 里塞

    ServerAction、RouteHandler都在Node里跑,枚举不到员工电脑上的USB机,也进不了人家的系统打印队列。你最多page.pdf()出个文件、丢OSS、发邮件。...window.print也救不了「免确认」'useclient'里照样可以:展开代码语言:JavaScriptAI代码解释window.print()弹窗还在。...那出纸写哪儿比较稳的拆法就两段:浏览器里的业务页负责触发(HTML打印专用URL已有PDF)工位上的Web打印专家客户端接任务,走本机打印栈页面侧装包:展开代码语言:BashAI代码解释npminstallweb-print-pdf...别指望Action里「顺便把纸打了」。几个容易踩的点联调失败先看客户端开没开,提示写成「请打开Web打印专家」,比丢一串WebSocket错误强。...站点部署在Vercel完全没问题,客户端是装工位的,别往Serverless里找打印机。纯手机浏览器、家里偶打合同,上静默客户端可能过重,window.print或下载PDF就够。

    19210

    js代码规范

    前言 在js的代码开发中,我简单的总结出了以下规则,后面会陆续补充并且对规范进行分类。...js代码建议保存到后缀名.js的文件中 js代码不建议放在html中,原因有:不能被缓存,会增大网页文件的大小,可维护性不高,会影响页面的加载。...js吧任何表达式都当一条简单语句,会导致一些隐性的错误。如果自己没加分号,那么js解释器会自动添加分号,按照自己能读懂的断句。 9.2 复合语句 也称为语句块,被包在大括号内部。...比如对象 var obj={} ;var arr=[] eval eval是最容易混乱使用的js函数,他可以执行内部入参的js函数或者表达式,可以直接解析变量。不建议使用 。...尽量使用语法严格模式 消除代码之中的不友好;代码运行更快 ;保证运行的安全 ;为新版本的js做好铺垫。 22.

    12.7K30

    调试JS代码

    记录下近期对JS代码的调试过程 性能分析 启动程序之后,打开google浏览器对应页面,按F12或者Ctrl+Shift+I进入 开发者工具页面 目前主要使用的功能有: Performance....性能评估,比如我想看下页面刷新的性能瓶颈所在,先点击 按钮,然后进行页面操作,当页面刷新完成,再点击 按钮,则会生成性能报告,可以看到资源消耗,JS代码的执行逻辑等 Sources....性能报告页面的 部分,可以通过点击色块查看其所在的js代码文件,如 点击则会跳转到 功能栏,有了源文件就可以进行断点调试;这里注意部分js文件是压缩后的文件,建议手动修改程序替换成可读性更强的原始代码文件...查看程序的打印输出,比如我想知道某个函数的执行时间,可以在js代码中进行修改 当js代码执行之后,可以在console输出中看到foo的执行时间 Network....代码使用for循环进行操作,也就是线性复杂度,计算耗时随数据量的增大而线性增大 通过debug观察发现颜色数组会有不少重复的数值,而同样的输入会导致相同的输出,然后对整个数据的1M个点进行统计分析,发现重复率相当高

    23.9K10

    JS代码混淆 | js 逆向系列

    0x02 混淆与压缩 代码压缩技术主要追求的就是文件变小,这样可以提交网页或程序加载速度,一般来说,代码压缩过程中会将代码中的空格、换行符、注释和不必要的字符等删除 // 原代码 let v = "Hello...-g uglifyjs example.js -c -m --mangle-props -c 代码压缩 -m 代码混淆 --mangle-props 混淆属性名 -b 美化显示 // 原代码 const...JShaman https://www.jshaman.com/ JShaman 是国内公司开发的js代码加密商业产品 免费版可以直接使用 // 原代码 const person = { age...,通过数组、字典等各种形式存储、拼接、替换等,最终进行还原,这里面没有利用到复杂的语法以及js 语言本身的特性,所以我们一点点解开也学不到什么; 这个代码就不一样了,我们一步一步解开它,尝试去学习其中的思路...关于代码控制流扁平化可以参考一些文章 https://www.cnblogs.com/ichunqiu/p/7383045.html 看到这个扁平化,我总能想起《中国合伙人》里的一句台词: “一位母亲用二十年的时间让他长大成人

    10.3K20

    MongoDB系列之Docker里运行JS脚本

    进入镜像,0ac56ae108c0 为容器ID docker exec -it 0ac56ae108c0 bash 因为要执行一大串的脚本,黏贴到shell窗口里,就要很长时间,所以问题来了,直接复制一大串代码执行的方法太慢了...,只能看看能不能用命令执行文件,将代码弄到一个js文件里,然后用命令执行 先从MongoDB数据库导出js脚本,然后在js脚本文件里,在其最前面加上连接数据库的代码: conn = new Mongo(..."127.0.0.1:27017"); db = conn.getDB("test"); 然后保存,使用docker命令复制js文件到MongoDB容器里 docker cp /opt/test.js...0ac56ae108c0:/opt/test.js 然后使用mongo命令执行js脚本,注意是要到MongoDB容器里执行 # 到/opt目录 cd /opt # 执行js脚本 mongo test.js...js代码里加上连接MongoDB的代码,然后docker复制文件到MongoDB容器里,在使用命令直接执行js文件,速度很快

    2.6K30

    js柯里化-面试手写版

    概念用我自己的话来总结一下,函数柯里化的意思就是你可以一次传很多参数给curry函数,也可以分多次传递,curry函数每次都会返回一个函数去处理剩下的参数,一直到返回最后的结果。...实例 这里还是举几个例子来说明一下:柯里化求和函数 // 普通方式 var add1 = function(a, b, c){ return a + b + c; }...通用柯里化函数 这里只是一个求和的函数,如果换成求乘积呢?我们是不是又需要重新写一遍?仔细观察一下我们的add函数,如果我们将if里面的代码换成一个函数执行代码,是不是就可以变成一个通用函数了?...动态创建函数 这个其实也是一种惰性函数的思想,我们可以提前执行判断条件,通过闭包将其保存在有效的作用域中,来看一种我们平时写代码常见的场景。...React在回家的路上我一直在想函数柯里化是不是可以扩展到更多场景,我想把函数换成react组件试试?我想到了高阶组件和redux的connect,这两个确实是将柯里化思想用到react里面的体现。

    1.2K10

    谁在代码里下的毒

    :“这代码写的真他妈的烂”。...其实让一个程序员口中说出这句话是由多方面因素引起的, 也并不完全是真的因为代码烂。 看一份代码是好是烂是带有主观色彩的,为什么会觉得别人代码烂? 一般也就两种情况。...第一,代码的确很烂, 代码质量的好坏其实是很考验一个程序员的水平的, 能写出烂代码的程序员比比皆是。...因此, 在维护别人的代码时一定要保持平常心, 「烂代码」无处不在,就算是再牛逼公司中再牛逼的程序也会生产出在别人眼里的「烂代码」。 有句话说的好:既然逃避不了被强奸的命运,那就学会享受吧!...3 代码没什么特别, 代码的注解却是脑洞大开:和老婆意见不一致的时候听她的,意见一致的时候听我的 4 前端同学如果碰到这种代码, 肯定是杀人的心都有了 5 真的是人才呀,还这么听话, 来我们公司上班吧

    1.2K51

    【JS游戏编程基础】关于js里的this关键字的理解

    this关键字在c++,java中都提供了这个关键字,在刚开始学习时觉得有难度,但是只要理解了,用起来就方便多了,下面通过本篇文章给大家详解js里this关键字的理解。...js的this指向是不确定的,也就是说是可以动态改变的。call/apply 就是用于改变this指向的函数,这样设计可以让代码更加灵活,复用性更高。...这也是一道常见的面试题,如下代码:   var number = 1;   var obj = {    number: 2,   ...在函数自执行里,this 指向的是 window 对象。 扩展,关于this,还有一个地方比较让人模糊的是在 dom 事件里,通常有如下3种情况: 如下: 1....jc.ToString(); //里面的this指向JSClass类的实例,里面有m_Text成员 } // --> initialize(); // --> 上面的代码执行结果是

    4.2K101
    领券