大神能给解释下高逼格的代码

lingwer111
lingwer111 发布于 2017-02-17 14:50:15 浏览:380 类型:原创 - 随笔 分类:JavaScript - JavaScript 二维码: 作者原创 版权保护
先上题目,
大神能给解释下高逼格的代码

看了别人的代码,先上一个很普通的答案,很直观也符合题目要求,但有一个缺点,只能接受2个传参。3个以上就报错了。
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`</title>
        
    </head>
    <body>
        <script type="text/javascript" charset="utf-8">
            function functionFunction(str) {
               var f = function(s){
               return str+", "+s;
                }
                return f;
           }
          var c = functionFunction("hello")("world");
         alert(c)
        </script>
    </body>
</html>


下面这个代码很高端,可以接受N个传参
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`</title>
        meta
    </head>
    <body>
        <script type="text/javascript" charset="utf-8">
            function functionFunction(str) {
                var ret = Array.prototype.slice.call(arguments).join(', ');
                 var temp = function(str) {
                       ret = [ret, Array.prototype.slice.call(arguments).join(', ')].join(', ');
                       return temp;
                  };
                temp.toString = function(){
                return ret;
               };
                return temp;
           }
           var c = functionFunction("hello")("world")("xixi");
           alert(c)
        </script>
    </body>
</html>


不懂的地方有
1,return temp; 在函数内部返回自身是什么意思
2,temp.toString 这一段是什么意思。
3,调用函数时,可以跟这么多个括号传参吗?

整段代码看的很晕,希望有大神解析下
标签:
z
给个赞 0 人点赞
收藏 2 人收藏
评论 已有 2 条评论;以下用户言论只代表其个人观点,不代表 前端网(QDFuns) 的观点或立场。
登录 以后才能发表评论
最新评论
lingwer111
lingwer11121 小时前2F
谢谢回答。刚刚才发现这个帖子有人回答了。 //@陈陈陈大文:主要在于call(arguments);原理就是给函数设定一个返回值,然后用argument把它call回去,这样就可以无限传值了。其实就是函数柯里化的实现,你可以百度一下“函数柯里化” “函数式编程”!
举报 支持 (0) 回复 (0)
陈陈陈大文
陈陈陈大文2017-02-22 15:04:341F
主要在于call(arguments);原理就是给函数设定一个返回值,然后用argument把它call回去,这样就可以无限传值了。其实就是函数柯里化的实现,你可以百度一下“函数柯里化” “函数式编程”!
举报 支持 (0) 回复 (1)
lingwer111 lingwer111 作者

作者最新