2.6 函数
如果需要多次使用同一段代码,可以把它们封装成一个函数。函数(function)就是一组允许在你的代码中随时调用的语句。事实上,每个函数实际上是一个短小的脚本。
作为一个良好的编程习惯,应该先对函数定义再调用它们。
一面是一个简单的示例函数:
function shout(){ var beatles = Array('Any','Bob','Cc','Dana','Eno'); for(var i=0; i < beatles.length; i++){ alert(beatles[i]); } } // 这个函数里的语句将依次弹出 beatles 中的四个名字,现在如果想要在自己的脚本里执行这一动作,可以随时使用如下语句来调用这个函数: shout();
每当需要反复做一件事情时,都可以利用函数来避免重复键入大量的相同内容。不过,函数的最大威力体现在,你可以把不同的数据传递给它们,而它们用这些数据去完成预定的操作。我们把传递过去的数据称为 参数 ( arguments ).
定义一个函数的语法:
function name(arguments){
statements;
}
在定义函数时,可以为它声明任意多个参数,只要用逗号隔开就行。在函数的内部,可以像使用普通变量那样使用它们。
下面定义一个用来完成 两个数值乘积的函数 :
function multiply( num1, num2 ){ var total = num1 * num2 ; alert(total); } // 在定义了这个脚本之后,我们就可以从任意位置去调用这个函数,如下所示: multiply(10, 20 ); // 200
函数不仅能够接收数据,而且能够返回数据。
我们完全可以定义一个函数并让它返回一个数值,一个字符串,一个布尔值。这需要我们用到 return 语句;
function multiply( num1, num2 ){ var total = num1 * num2 ; return total; } // 在定义了这个脚本之后,我们就可以从任意位置去调用这个函数,如下所示: var aa=multiply(10, 20 ); alert(aa) ; // 200
变量的作用域
前面说过,作为一个良好的编程习惯,在第一次使用某个变量赋值时应该使用 var 对其做出声明。当函数内部使用时就更应该这么做了。变量可以是全局的,也可以是局部的。在谈论全局变量和局部变量的区别时,我们算是在讨论变量的作用域 ( scope ).
全局变量(global variable )可以在脚本的任意位置引用它们。全局变量的作用域是整个脚本。
局部变量( local variable )只在于声明它的那个函数内部,在那个函数的外部是无法引用的。局部变量仅限于某个特定的函数。
用 var 关键字可以明确地为函数指定作用域
function square( num ){ total = num * num ; return total ; } var total = 50; var number = square(20); alert(total); // 400 // 我们希望得到的值是 50 ,但函数内部定义变量 total 未使用var 导致total 全局有效,所以覆盖了 total =50 这条赋值语句的赋值 // 这里将函数重写如下 function square(num){ var total = num*num; return total; } var total=50; var number=quare(20); alert(total); // 50
请记住,函数在行为方面应该像一个自给自足的脚本,在定义一个函数时,我们一定要把它内部的变量全都声明为局部变量,如果你总是在函数里使用var 关键字来定义变量,就能避免任何形式的二义性隐患。