ITPub博客

首页 > 应用开发 > IT综合 > JavaScript之坑了我--函数细节

JavaScript之坑了我--函数细节

原创 IT综合 作者:eBusinessMan 时间:2015-11-04 21:29:06 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对象中之类的
目前本人尚未解决,后续。。。。。。 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29900383/viewspace-1822704/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-21

  • 博文量
    46
  • 访问量
    125028