javascript理解之function函数部分

函数的概念:

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

创建匿名函数

1
2
3
function(){
return ‘hi’; //单独的匿名函数是无法运行的,就算能运行也无法调用,因为没有名字
}

这种匿名函数的用法在JQuery中非常多。直接声明一个匿名函数,立即使用。用匿名函数的好处就是省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突,一旦命名冲突以最后声明的为准。

在javascript语言里任何匿名函数都是属于window对象。在定义匿名函数时候它会返回自己的内存地址,如果此时有个变量接收了这个内存地址,那么匿名函数就能在程序里被使用了,因为匿名函数也是在全局执行环境构造时候定义和赋值,所以匿名函数的this指向也是window对象.

(function(){
   console.log(this === window);//true
})();

通过自我执行来执行匿名函数:

//通过自我执行来执行匿名函数

<script type="text/javascript">
  (function (){         // (匿名函数)();第一圆括号放匿名函数,第二个圆括号执行
       alert('Lee');
  })();
</script>

把匿名函数自我执行的返回值赋给变量:

//把匿名函数自我执行的返回值赋给变量

<script type="text/javascript">
    var box =  (function (){           
           alert('Lee');
      })();         //弹出”Lee”;
    alert(box);   //弹出 undefined,如果写出alert(box()),那么只会弹出一个"Lee"   
</script>

var box= (function () {
    return 'hi';
})();
console.log(box);//hi
自我执行匿名函数的传参:
//自我执行匿名函数的传参

<script type="text/javascript">
    (function (age){
         alert(age);
    })(100);          //弹出100
</script>

js创建动态函数:

js支持创建动态函数,动态函数必须用Function对象来定义(Function是js中的一个对象,是固定不变的,规定Function对象的”F”必须大写,当是function的时候,我们知道是定义函数的时候所使用的一个关键字:function funName(x,y),当是Function的时候(F大写的时候),我们知道是js中的对象)

创建动态函数的基本格式:var 变量名 = new Function(“参数1”,”参数2”,”参数n”,”执行语句”);

<script type="text/javascript">
    var square = new Function ("x","y","var sum ; sum = x+y;return sum;");
    alert("square(2,3)的结果是:"+square(2,3));  //square(2,3)的结果是:5
</script>

方法和函数的区别

var arr = [1,2,3,4,5]
var a =12;   // 变量:自由的
arr.a= 5;     //属性:属于一个对象
function show()     //函数:自由的
{
     alert(‘a’);
}
arr.fn = function()   //方法:属于一个对象
{
     alert(‘b’);
}

其实方法就是函数,只不过方法是有所属的对象。

高阶函数

这里的高阶函数可不是高数里的那个高阶函数,所谓高阶函数就是操作函数的函数,它接收一个或多个函数作为参数,并返回新函数

参考文章:http://segmentfault.com/a/1190000000660786