2009六月10
javascript 定义函数(声明函数)的方法
在写javascript程序时,我们做的最多的就是调用函数以得到我们预期的结果,可是对于函数定义(函数声明)你都知道哪些方法呢?
javascript定义函数(声明函数)可以有三种方法:正常方法、构造函数、函数直接量。
下面,我就参照《javascript 权威指南》这本书中的实例来介绍一下,使大家对其有所了解。并简要介绍一下函数是可以作为数据使用的。
最简单的声明javascript函数的方法和我们其他编程语言没有区别,function(param){}
//正常方式定义javascript函数
function print(msg)
{
document.write(msg,"<br/>");
}
function print(msg)
{
document.write(msg,"<br/>");
}
如果函数不包含return 语句,只执行函数体内语句,并返回undefined
构造函数方法:new Function();
//构造函数方式定义javascript函数
var add = new Function('a','b','return a+b;');
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(a,b){return a+b;};
上例中,函数直接量创建的是未命名函数,语法规定其也可以指定函数名,这在递归函数时是很有用滴。呵。
//函数直接量 指定函数名 递归函数
var result = function fact(x){if(x<=1) return 1; else return x*fact(x-1);};
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);
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/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
天书啊
[回复]
有个弱弱的问题,对JS的定义有的人用括号,而有的人用$,有什么区别。
而且我试着改过,看$不顺眼,改成括号就失效了。
[回复]
@LAONB
$这种东西,一般是JS框架里面定义的,或者自己封装了一层以实现某些功能。
比如说,你可以定义$为document.getElementById()这是可以的。
一般像用jQuery的时候,jQuery对象命名时一般都加上$
至于你为什么改成括号就失效,我怀疑是你写错了某些东西,呵呵 :grin:
[回复]
神奇的javascript
[回复]