data:2021-01-05
柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。简单理解题目意思,就是指,我们将预定义的函数的参数逐一传入到curryIt中,当参数全部传入之后,就执行预定义函数。于是,我们首先要获得预定义函数的参数个数fn.length,然后声明一个空数组去存放这些参数。返回一个匿名函数接收参数并执行,当参数个数小于fn.length,则再次返回该匿名函数,继续接收参数并执行,直至参数个数等于fn.length。最后,调用apply执行预定义函数。
function curryIt(fn) { var n = fn.length; var args = []; return function(arg){ args.push(arg); if(args.length < n){ return arguments.callee; }else return fn.apply("",args); } }
parseInt()方法转换进制:
给定二进制字符串,将其换算成对应的十进制数字
function base10(str) { return parseInt(str,2); }
toString()方法 将给定值转化为2进制
- 将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位
function convertToBinary(num) { var s = num.toString(2); var l = s.length; if(l<8){ var s1 = "00000000"; var s2 = s1.slice(0,8-l); s = s2+s; } return s; }