首页 > JavaScript > javascript 定义函数(声明函数)的方法
2009六月10

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);

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/10/817/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

6 Responses to “javascript 定义函数(声明函数)的方法”

  1. #1 Lxhome 回复 | 引用 Post:2009-06-10 21:48

    天书啊 :lol:

    [回复]

  2. #2 LAONB 回复 | 引用 Post:2009-06-11 00:53

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

    [回复]

  3. #3 simaopig 回复 | 引用 Post:2009-06-11 09:45

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

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

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

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

    [回复]

  4. #4 tomheng 回复 | 引用 Post:2011-03-01 23:46

    神奇的javascript

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)