javascript系列1:函数

函数分为:声明式函数,匿名函数,表达式函数

声明式函数如:

function testFn(){

}

函数传参:

函数传参有两种类型的参数:原始类型和对象类型

原始类型不改变调用函数的变量值,即为传值

对象类型会改变调用函数的变量值,即传引用

例:

 1 window.onload = function(){
 2             testParams();
 3         }
 4         function alertArgs(strObject,arrObject){
 5             strObject = "Override";
 6             arrObject[1] = "2";
 7             arrObject[arrObject.length] = "three";
 8         }
 9         function testParams(){
10             var str = "abc cba";
11             var arr = new Array("one","two");
12             console.info(str);
13             console.info(arr);
14             console.info("***********");
15             alertArgs(str,arr);
16             console.info(str);
17             console.info(arr);
18         }
运行结果:
声明式函数需要特别注意的地方:
1 if(condition){
2             function say(){
3                 alert("a");
4             }
5         }else{
6             function say(){
7                 alert("b");
8             }
9         }
大多数浏览器会返回第二个函数,即调用的时候弹出"b",而firefox则会在condition为true时返回"a"。
匿名函数如:

 new Function("param1","param2",...,"return param1*param2");

函数最后一个参数为函数体,前边的参数为函数的参数

这种的函数为动态函数。与声明式函数不同的是,它会动态创建一个新函数,当这个函数执行完后就会被立即删除。如果该函数在一个for循环中执行,则执行一次循环就会创建一次函数,而声明式函数只会创建一次。

如:var Fn = new Function("x","y","return x*y");相当于:

  function Fn(x,y){

    return x*y;

  }

函数表达式如:

var fn = function(){

}

声明一个匿名函数,赋值给变量fn

用法几乎同声明式函数用法。

但使用时须注意:

如果表达式函数在调用之后定义,则会报错"undefined"。而声明式函数不会出现这种情况。

如果在if判断语句的不同条件中出现两个同名的声明式函数,则只有Firefox会当条件为true时执行if里的函数,其它浏览器不管条件如何,都是后一个函数。而表达式函数则不会出现这种情况,表达式函数按照正常的条件语句执行的顺序执行。

 

posted @ 2014-09-17 15:37  菩提明镜  阅读(165)  评论(0编辑  收藏  举报