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