Javascript小进阶6--函数细节

函数细解:

   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--函数细节)