Javascript基础Function

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

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

 function sum(n1,n2){

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

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