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;
    }