- 函数声明与表达式
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不仅可以传递参数,还可以扩充函数的作用域(真正的用处)