函数:就是一个功能的封装体。可分为五类:
·常规函数
·数组函数
·日期函数
·数学函数
·字符串函数
一,js函数可用两种方法定义:
·function声明函数
function add(x,y) {
alert(x+y);
}
·还可以用Function实例
var add = new Function("x", "y", "alert(x+y);");
二,函数的一些用法:
//将一个匿名函数赋值给变量add
var add = function(x, y) {
alert(x + y);
};
add(3, 4);//7
//函数表达式作为参数传递给其他函数
var arr = [1, 5, 4, 7];
arr = arr.sort(function(x, y) {
return x - y;
});
alert(arr);//1,4,5,7
//匿名函数直接调用
alert( function(x, y) {
return x + y;
}(3, 4));
//函数表达式也可以定义名称
var f=function show(x){
if(x<1) {
return 1;
}else{
return x*show(x-1);
}
};
声明式函数定义语句属于顶级作用域范围,函数调用语句可写在函数声明语句之前:
add(3, 4);//7
function add(x, y) {
alert(x + y);
}
而函数表达式定义的函数在定义之前无法调用。
三,另外Javascript中的函数不需要声明返回类型,使用return关键字返回一个值。若函数不包含return语句,或者直接使用”return;”,则函数的返回值为undefined。
四,函数可以嵌套在其他的函数里面,内层函数可以访问外层函数的参数和变量:
function add(x, y) {
function m(x) {
return x+1;
}
return m(x) + m(y);
}
alert(add(1, 2));//5
五,函数的调用
函数体代码在函数被调用时才会执行,共分为四种调用方式:
·普通的函数调用
·方法调用
·构造函数调用
·通过 call() 和 apply() 间接调用
alert("hello");
var result = add(1, 2);//函数调用
function speak(name) {
alert('hello,' + name);
};
var people = {};
people.say = hello;
people.say('praba'); //方法调用
var obj = new Object();
function People(name) {
this.name=name;
console.debug(this);
}
var people = new People('praba');//构造函数调用
var name = 'A';
var user = {
name : 'B'
};
function showName() {
alert(this.name);
}
showName();
showName.call(user);
//call()调用,apply() 和 call() 类似,区别在于,后面的实参需要以数组的形式传递(可将当前函数的arguments数组直接传入)。