自定义函数

1、函数的定义(命名函数或者函数语句):

function myfunc(arg_1,arg_2,...,arg_n){

//执行一些语句

return "一些数据或者变量";

}

 

2、使用函数表达式定义函数(匿名函数): 将一段函数表达式存储在一个变量中。

函数表达式是一种可以用表达式(而不是语句)声明的未命名函数,也称为匿名函数。

var myfunc = function(arg_1,arg_2,...,arg_n){

  //执行一些语句

   return "一些数据或者变量";

}

 

函数表达式和函数语句的区别:

(1)当函数语句被定义的时候,在同一个脚本代码中被优先考虑。因此,无论该函数是在定义之前或定义之后都可以被脚本引用。

(2)函数表达式也可以被作为另一些函数或方法的参数。

(3)函数表达式和函数语句的区别还体现在内存管理和垃圾回收方面。

总结:

如果不是特殊的用途(例如用于定义对象的方法),不推荐使用函数表达式,因为函数语句相比起来更容易阅读和理解,与函数表达式相比,函数语句代码更为简洁而且

不容易混淆,因为函数表达式既需要var关键字又需要function关键字。

但是在某些情况下,函数表达式非常有用,一个常见用法就是将函数表达式用于那些使用一次后便丢弃的函数,这样有利于内存管理。另一个用法就是向 prototype 属性附加函数以实现对象方法的定义,这个用法在js面向对象编程时最常见。

 

3、匿名自执行函数

语法:

(function(){

// 执行一些语句

})();

有参数的

(function(arg_1,arg_2,arg_3){

// 执行一些语句

})(arg_1,arg_2,arg_3);

 

优点:

(1)由于函数是一个封闭的作用域范围,并且可以嵌套函数,所以可以使用这种函数来实现封装自己的所有函数和变量,从而避免来自多个开发者的相互冲突。

(2)由于他们位于同一个函数中,所以可以相互引用。(闭包)

(3)由于外部无法引用函数内部的变量,因此自执行完后很快被释放,这种机制不会污染全局对象。

(4)相当于定义了一个命名空间,来自不同的开发者的功能位于自己的命名范围内。

 

如何访问匿名自执行函数里面的函数和对象呢?

var o = new Object();

  (function(_obj){

    _obj.myfunc =function(){

  };

})(o);

 

alert(o.myfunc());

 

最常用的是将全局对象window 作为参数传进去,这样函数或变量就成为全局函数和变量。

(function(window,undefind){

  //Jquery定义

})(window);

 

 4、使用Function 类定义函数

var functionName = new Function([arg1,arg2,arg3],functionBody);

原文地址:https://www.cnblogs.com/chengmingxiaowu/p/7676700.html