美文网首页
Javascript小进阶6--函数细节

Javascript小进阶6--函数细节

作者: _Danniel_ | 来源:发表于2018-06-26 10:24 被阅读0次

    函数细解:

       1. 函数的声明三种

           a. 普通直接方式:

           function  say(name){alert(name);}

           b. 变量初始化的方式:

              var  say = function(name){ alert(name);};

           c.  原始方式:

              var  say = new Function(‘name’,” alert(name);”);

    注意:c种方式能体现js中“函数也是对象,函数名是指针”。不过这种声明方式很损性能:第一次是ECMAScript代码,第二次是解析传入构造函数中的字符串;故少用。

       2.  由于函数也是对象,即变量,所以,我们可以将一个函数作为值进行传参

             function getSum(sumFunc , x,y){

               return sumFunc(x ,y);

             }

             function sum (x ,y){

             return x+y;

             }

             getSum(sum , 2 , 3);//!!!

    再深入点:

              js函数作为对象,要注意以下属性

             我们在浏览器console中   执行:

                Object.getOwnPropertyNames( function(){….} );

             结果:

                 ["length", "name", "arguments", "caller", "prototype"]

             解析:

             length: 函数的参数的个数

             name : 当前函数的名字:用在多个函数的循环中

             arguments : 一个类数组对象,包含着在函数运行过程中传入函数中的所有参数,其中一个属性callee指向当前函数对象,可用在递归;

             caller :

             prototype : 指向原型对象。

             然而由此引发我的问题来了:

             1.       Js中函数参数如何声明:不确定的参数个数?例如Function(‘’,’’ ‘’,’’ ‘’,’’……)

             2.       Js函数对象创建时底层如何实现获取此函数的名字?

             3.       Js函数开始执行前做了什么工作:例如将传参封装到arguments对象中之类的

    目前本人尚未解决,后续。。。。。。 

    相关文章

      网友评论

          本文标题:Javascript小进阶6--函数细节

          本文链接:https://www.haomeiwen.com/subject/qispyftx.html