+发表新主题
查看: 1378|回复: 0

[代码片段] js Function 对象

[复制链接]

[代码片段] js Function 对象

[复制链接]
MONDEO 发表于 2016-1-1 22:40:09 浏览:  1378 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一. Function对象

      1.重载:程序中同时定义多个相同函数名,不同参数列表的函数。调用时,根据传入参数的不同,动态选择匹配的函数执行。

       注意:js的语法是不支持重载的。但可以使用arguments实现重载效果。

       何时使用重载:不同参数,不同操作,但操作名称相同

       使用重载的目的:减轻调用者调用时选择的负担

      arguments: 所有函数对象中默认都有的,专门接收调用时传入参数的值的“类数组对象”——>长得像数组的对象

         有2点像数组:arguments.length获得参数值的个数

                arguments<i>: 获得下标为i位置的参数值


  1. 例如:

  2.   //重载

  3.      function calc(){

  4.         if(arguments.length==1){

  5. return arguments[0]*arguments[0]

  6. }

  7. else if(arguments.length==2){

  8. return arguments[0]+arguments[1]

  9. }

  10. }

  11. console.log(calc(14));  //196

  12. console.log(calc(12,24)); //36
  13. 223555erss110idqc1yifi.png
  14.        比较:类数组对象 与 数组  的区别             1. 类数组对象不是Array类型             2.数组是Array类型的对象       参数变量优点: 提醒调用者,如何正确使用函数。                    参数变量更简便。      2. 内存中的函数对象,3个阶段:       定义时,创建2个对象:函数对象和作用域链对象           函数对象:封装了函数的定义,但暂时不读取函数定义           作用域链对象:专门保存函数可用的变量所在位置的对象       调用时,创建1个新对象:活动对象           活动对象:临时封装本次调用函数时使用的局部变量,并将活动对象的引用,                压入作用域链对象中                                                         调用后:作用域链中的活动对象引用出栈,活动对象及其内部的局部变量一同释放!       如何创建函数对象:3种方式        1. 声明方式:function 函数名(参数列表){函数体;return 值},只有声明方式才能被提前!        2. 函数直接量:                      var 函数名=function(参数列表){函数体;return 值}        3. new Function:           var 函数名=new Function("参数1","参数2",...,"函数体");            :js中创建函数三种方式:             function compare(a,b){return a-b;}             var compare=function(a,b){return a-b;}             var compare=new Function("a","b","return a-b;");   
  15. 例如://声明提前

  16.   function fun(){

  17.    console.log(1);

  18.    }

  19.    fun();  //2

  20.       function fun(){

  21.    console.log(2);

  22.    }

  23.    fun();  //2

  24.    var fun=100;

  25.    console.log(fun);  //100
复制代码
223555erss110idqc1yifi.png


  • //声明提前
  •   function fun(){
  •    console.log(1);
  •    }
  •    fun(); //1
  •       var fun=function(){
  •    console.log(2);  //2
  •    }
  •    fun();
  •    var fun=100;   console.log(fun); //100

复制代码
223555erss110idqc1yifi.png

                             

     

  3.匿名函数:定义时没有变量引用的函数

       何时使用:

         1. 匿名函数自调:定义完立刻执行,执行完立刻释放

              何时使用自调:一个函数只用一次!

             如何使用:

                                 (function(参数列表){

                    函数体;

                                      return

                                       })(参数列表);



  • //匿名函数自调
  •    var n=10;
  •    (function(n){
  •       n--;
  •   console.log(n);
  •    })(n);  //9   console.log(n);  //10

复制代码
223555erss110idqc1yifi.png



         2. 匿名函数回调:将函数作为对象传递给其他函数,由其他函数调用。

            何时使用回调:如果一个函数只被另一个函数调用时,就使用回调。

             优点:节省内存空间

             缺点:无法反复使用



  • //匿名函数的回调
  •   var arr=[3,5,2,1,6,4,7];
  •   arr.sort(function(a,b){return a-b});  console.log(arr);

复制代码
223555erss110idqc1yifi.png

  
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网