javaweiming 2011-03-22
javascript的函数有三种定义方式:
1.正常方法:
<html> <head> <title>正常方法</title> <script type="text/javascript"> function print(msg) { document.write(msg,"<br/>"); } </script> </head> <body> <script type="text/javascript"> print("正常方法"); </script> </body> </html>
2.用Function类来new出一个函数(匿名函数):
<html> <head> <title>用new Function(参数)来构造出一个函数</title> <script type="text/javascript"> var add = new Function('a', 'b', 'return a + b'); //注意javascript大写小写敏感,其中Function中的F是大写,不是小写 </script> </head> <body> <script type="text/javascript"> var value = add(1, 2); alert(value); //document.write(value,"<br/>"); </script> </body> </html>
事实上Function是一个类
用Function类直接创建函数的语法如下:
var function_name = new Function(arg1, arg2, ...,argN,function_body) //在上面的形式中,每个 arg 都是一个参数 //最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。
你可能非常想知道Function()构造出函数的用途是什么。
为什么不能只用function语句来定义所有的函数呢?
原因是:
(1)Function()构造函数允许我们动态地建立和编译一个函数,它不会将我们限制在function语句预编译的函数体中。这样做带来的负面影响效应就是每次调用一个函数时,Function()构造函数都要对它进行编译。因此,在循环体中或者在经常使用的函数中,我们不应该频繁地调用这个构造函数。
(2)使用Function()构造出来的函数的另一个原因是它能够将函数定义为JavaScript表达式的一部分,而不是将其定义一个语句,这种情况下使用它就显得比较的方面,甚至可以说精致。
3.函数直接量:
<html> <head> <title>函数直接量 </title> <script type="text/javascript"> var add = function(x,y){ return x + y; } </script> </head> <body> <script type="text/javascript"> var addvalue = add(1, 2); alert(addvalue); </script> </body> </html>
函数直接量是一个表达式,它可以定义匿名函数。函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名