在写javascript程序时,我们做的最多的就是调用函数以得到我们预期的结果,可是对于函数定义(函数声明)你都知道哪些方法呢?
javascript定义函数(声明函数)可以有三种方法:正常方法、构造函数、函数直接量。
下面,我就参照《javascript 权威指南》这本书中的实例来介绍一下,使大家对其有所了解。并简要介绍一下函数是可以作为数据使用的。
最简单的声明javascript函数的方法和我们其他编程语言没有区别,function(param){}
function print(msg)
{
document.write(msg,"<br/>");
}
如果函数不包含return 语句,只执行函数体内语句,并返回undefined
构造函数方法:new Function();
var add = new Function('a','b','return a+b;');
接受任意多个字符串参数,最后一个参数是函数体。如果只传一个字符串,则其就是函数体。
另外一种,我用的最少的就是函数直接量:var var_name = function(param){};
var result = function(a,b){return a+b;};
上例中,函数直接量创建的是未命名函数,语法规定其也可以指定函数名,这在递归函数时是很有用滴。呵。
var result = function fact(x){if(x<=1) return 1; else return x*fact(x-1);};
另外,函数是可以做为参数(即数据)使用的,和其他的参数一样,该传啥就传啥。
下面以“犀牛”(《javascript 权威指南》)这本书,第七章的一个实例来结束本篇日志
function add(x,y){return x+y;}
function subtract(x,y){return x-y;}
function multiply(x,y){return x*y;}
function divide(x,y){return x/y;}
functoin operate(operator,operand1,operand2)
{
return operator(operand1,operand2);
}
//计算(2+3) + (4*5)
var i = operate(add,operate(add,2,3),operate(multiply,4,5));
//使用函数直接量
var operators = new Object();
operators['add'] = function(x,y){return x+y;}
operators['substract'] = function(x,y){return x-y;}
operators['multiply'] = function(x,y){return x*y;}
operators['divide'] = function(x,y){return x/y;}
operators['pow'] = Math.pow; //也用于预定义函数
functions operate2(op_name,operand1,operand2)
{
if(operators[op_name] == null) return "unknown operator";
else return operators[op_name](operand1,operand2);
}
//定义"hello" + "" + "world"
var j = operate2("add","hello",operate2("add"," ","world"));
var k = operate2("pow",10,2);
天书啊