javascript的函数有三种定义方式:
1.正常方法:
2.用Function类来new出一个函数(匿名函数):
[color=red]事实上Function是一个类[/color]
用 Function 类直接创建函数的语法如下:
你可能非常想知道Function()构造出函数的用途是什么。
为什么不能只用function语句来定义所有的函数呢?
原因是:
(1)Function()构造函数允许我们动态地建立和编译一个函数,它不会将我们限制在function语句预编译的函数体中。这样做带来的负面影响效应就是每次调用一个函数时,Function()构造函数都要对它进行编译。因此,在循环体中或者在经常使用的函数中,我们不应该频繁地调用这个构造函数。
(2)使用Function()构造出来的函数的另一个原因是它能够将函数定义为JavaScript表达式的一部分,而不是将其定义一个语句,这种情况下使用它就显得比较的方面,甚至可以说精致。
3.函数直接量:
函数直接量是一个表达式,它可以定义匿名函数。函数直接量的语法和function语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名
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>
[color=red]事实上Function是一个类[/color]
用 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语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名