javascript函数--第二章(声明,定义)

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语句非常相似,只不过它被用作表达式,而不是用作语句,而且也无需指定函数名

相关推荐