首页 > JS&HTML > javascript 定义函数(声明函数)的方法

javascript 定义函数(声明函数)的方法

在写javascript程序时,我们做的最多的就是调用函数以得到我们预期的结果,可是对于函数定义(函数声明)你都知道哪些方法呢?

javascript定义函数(声明函数)可以有三种方法:正常方法、构造函数、函数直接量。

下面,我就参照《javascript 权威指南》这本书中的实例来介绍一下,使大家对其有所了解。并简要介绍一下函数是可以作为数据使用的。

最简单的声明javascript函数的方法和我们其他编程语言没有区别,function(param){}

//正常方式定义javascript函数
function print(msg)
{
    document.write(msg,"<br/>");
}

如果函数不包含return 语句,只执行函数体内语句,并返回undefined

构造函数方法:new Function();

//构造函数方式定义javascript函数
var add = new Function('a','b','return a+b;');

接受任意多个字符串参数,最后一个参数是函数体。如果只传一个字符串,则其就是函数体。

另外一种,我用的最少的就是函数直接量:var var_name = function(param){};

//函数直接量方式定义javascript函数
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);
  1. Lxhome 六 10th, 2009 @ 21:48 | #1

    天书啊 :lol:

  2. LAONB 六 11th, 2009 @ 00:53 | #2

    有个弱弱的问题,对JS的定义有的人用括号,而有的人用$,有什么区别。
    而且我试着改过,看$不顺眼,改成括号就失效了。

  3. simaopig 六 11th, 2009 @ 09:45 | #3

    @LAONB
    $这种东西,一般是JS框架里面定义的,或者自己封装了一层以实现某些功能。

    比如说,你可以定义$为document.getElementById()这是可以的。

    一般像用jQuery的时候,jQuery对象命名时一般都加上$

    至于你为什么改成括号就失效,我怀疑是你写错了某些东西,呵呵 :grin:

评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 1 )
  1. 六 10th, 2009 @ 22:48 | #1
    Pingback: javascript Arguments对象——函数的实际参数 | 小小子,simaopig