Javascript基础Function

  • 函数声明与表达式
 1 function someFunc(){
 2     alert("这是一个函数");
 3 }
 4 
 5 var func=function(){
 6     alert("函数表达式");
 7 };//注意末尾有一个分号
 8 
 9 someFunc();
10 func();
  • 作为值的函数
 1 //把函数当作参数传递给另一个函数,类似C#中的委托用法
 2     function sum(n1){
 3         return n1+10;
 4     }
 5     
 6     function minus(n1){
 7         return n1-10;
 8     }
 9     
10     function callSomeFunc(someFunc,someArguments){
11         return someFunc(someArguments);
12     }
13     
14     alert(callSomeFunc(sum,20));
15     alert(callSomeFunc(minus,30));
 1 //将一个函数作为另一个函数的结果返回
 2 <script type="text/javascript" charset="utf-8">
 3 function createComparisonFunction(propertyName){
 4     return function(obj1,obj2){
 5         var val1=obj1[propertyName];
 6         var val2=obj2[propertyName];
 7         if(val1>val2){
 8             return 1;
 9         }else if(val1<val2){
10             rerurn -1;
11         }else{
12         return 0;
13         }
14     }    
15 }
16 var data=[{name:"xiao",age:23},{name:"wang",age:26}];
17 data.sort(createComparisonFunction("name"));
18 alert(data[0].age);    
19 </script>
  • 函数内部属性
 1 <script type="text/javascript" charset="utf-8">
 2 //arguments的属性,代替了函数名的紧耦合
 3  function factorial(num){
 4     if(num<=1){
 5         return 1;
 6     }else{
 7         return num*arguments.callee(num-1);
 8     }
 9  } 
10  alert(factorial(5));
11 </script>
 1 <script type="text/javascript" charset="utf-8">
 2  function outer(){
 3     inner()
 4  }
 5  function inner(){
 6     //alert(inner.caller);
 7     alert(arguments.callee.caller);//caller获取调用当前函数的引用
 8  } 
 9  inner();
10 </script>
  • 函数的属性及方法

name可以获取函数的名称,length属性可以获取函数参数的个数;

1 function sum(n1,n2){
2     
3 }
4 alert(sum.name);//sum
5 alert(sum.length);//2
 1 <script type="text/javascript" charset="utf-8">
 2      window.color="red";
 3      var o={color:"bule"};
 4      function showColor(){
 5         alert(this.color);
 6      }
 7      showColor();//red
 8      showColor.call(o);//blue
 9      showColor.apply(o);//blue
10      var objshowColor= showColor.bind(o);//band创建了函数的一个示例,objshowColor内this就相当于o
11    objshowColor();//blue 12
 </script>
1  function sum(n1,n2){
2     return n1+n2;
3  }
4  
5  function callSum(n1,n2){
6     return sum.apply(this,arguments);//传递参数
7  }
8  
9  alert(callSum(3,5));

apply和call不仅可以传递参数,还可以扩充函数的作用域(真正的用处)

posted @ 2013-11-27 22:26  DoNetCoder  阅读(275)  评论(0编辑  收藏  举报