js之函数

函数也是一种特殊对象,函数中封装了特定代码的执行JSON.stringify()  就是一个函数。

1.函数的定义(公式)

  1)函数声明

       function  x(a){

                   console.log('hello',a);

                }

    2)函数表达式

      var   x =function(a){

                         console.log('hello',a);

              }

        两种函数定义的区别:

              a.函数声明会提升,在函数声明前可以调用该函数

              b.函数表达式会提升表能量名,提升后变量名指向undefined,所以无法在函数赋值前调用该函数

 2.函数调用(调用公式)

       var foo = function (a,b,c){

                    console.log(this,a,b,c);  //this---->foo

            }

            1)foo(1,2,3)

             2)foo.call(this,1,2,3);

             3)foo.apply(this,[1,2,3]);

             4)new Object();

  3.函数的内部属性

         属性值只有在函数运行时能被确认,只有在函数内部才能调用的属性:

       1)形参

       2) this     --->环境对象

                       sayHello();     this--->window/global

                        obj.sayHello();  this --->obj     谁调用指向谁

        3)arguments

                   类数组对象

                       1.length 属性,可以获取数组长度

                       2. 可以通过下表访问元素

                       3.对象体现在它可以有特有属性  arguments.callee(指向当前函数) ----递归调用,调用自己

               eg :function  add(a,b){

                                           var result =a+b;

                                             return result;

                                            }           var result =add(1,2)

      js函数内存图

js之函数

4.函数的应用

       1)函数作为参数(回调函数)

       2)函数作为返回值。

如以下,对于一个人的信息数组的排序,就用到了函数作为参数,和函数作为返回值

js之函数

以上代码中level既是一个函数的形参,又是作为对象的属性名而存在的,a[level] 即a.level  只不过在使用[ ]访问时,要使用a["level"],而我们可以 var level ="level",使代码的复用性提高。