JavaScript 让你意外的瞬间(函数2)

这一篇呢,是对之前的函数那一篇的补充,因为又找到好玩的了,所以自然要给与补充。
再附上上一篇函数的文章:
https://blog.csdn.net/weixin_46726346/article/details/107911551

上一篇忘记说了JS中函数最有趣的特点了。根源就是,JS的函数是一个对象,是Function类型的对象。那,由于函数是一个对象,那么函数名就是一个指向函数对象的指针

就像一个变量名指向一个对象的地址一样。。。
那这就有趣了,我完全可以这么做。

    <script>
        function f1(){
            return 1;
        }
        var f1=function(){
            return 1;
        }
    </script>

这两种方式,应该是几乎没有任何差别。
那既然函数名是指向对象的指针。

    <script>
        function f1(){
            return 1;
        }
        var f1=function(){
            return 1;
        }
        var x=f1;
        var y=f1;
        var z=x;
    </script>

哎?这么写也是完全没有问题的啊。。。。。
在这里插入图片描述
那你说上面的两种声明函数的方式真的没有区别吗?
我们来看代码:

    <script>
        f2(5);
        function f2(x){
            console.log(x);
        }

        f3(5);
        var f3=function(x){
            console.log(x);
        }
    </script>

我用两种方式定义了f2,和f3。并且都在函数定义之前调用。我们来看一下结果:
在这里插入图片描述
这里我就不解释了,可以看出这两者的差别了吧。

好,知道了两者的差别后,我们继续看好玩的。。。
刚才说函数名就是一个变量名,那么函数是什么?啊哈,函数不就是值吗。那既然是值,是不是就能被当做另一个函数的参数。。。
在这里插入图片描述

我写了一段程序,来看一下:

    <script>
        function callSomeFunction(somefunction,somedata){
            return somefunction(somedata);
        }

        function add(num){
            return num+10;
        }
        function app(num){
            return num-10;
        }

        var x=50;
        x=callSomeFunction(add,x)
        console.log(x);

        var y=50;
        y=callSomeFunction(app,y);
        console.log(y);

    </script>

因为减法的英文不会,所以用了app哈。。。
这就是一个函数的参数是另一个参数的情况,炫酷吗,其实还有更炫酷的,但我自己掌握的也没有那么好。。。。。
所以只能分享到这里了。。。。

OK,关于函数的补充 就说这些。。。。。。

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页