JavaScript的最重要的一个部分是制作其他代码可以重用的代码。要做到这一点,你可以把代码组织成执行特定任务的函数。函数是结合在一个单一的块中,并给予一个名称的一系列代码语句。然后,你就可以通过引用该名称来执行块中的代码。
1、定义函数
你可以使用function关键字后跟一个描述该函数用途的名称、在()中的零个或多个参数的列表,以及在{}块中的一个或多个代码语句来定义一个函数。例如,下面是一个网控制台写入"Hello World"的函数的定义:
function myFunction(){
console.log("Hello World");
}
要执行myFunction()中的代码,你需要做的所有工作就是在主JavaScript,或者在另一个函数中添加下面一行:
myFunction();
2、传递变量给函数
你经常需要将特定的值传递给函数,而函数在执行他们的代码时,将使用这些值。通过以逗号分隔的形式将值传递到函数。函数定义需要在()中有一个与传递进来的值的数量匹配的变量名列表。例如,下面的函数接受两个参数,name(名字)和city(城市),并使用它们来构建输出字符串:
function greeting(name,city){
console.log("Hello" + name);
console.log(". How is the weather in" + city);
}
要调用greeting()函数,你需要传递一个name值和一个city值。该值可以是直接的值或先前定义的变量。为了说明这一点,下面的代码执行一个name变量,和以一个直接字符串作为city的greeting()函数:
var name = "Brad";
greeting(name,"Florence");
3、从函数返回值
通常情况下,一个函数需要返回一个值给调用代码。我们添加一个后面跟着变量或值的return关键字从函数返回值。例如,下面的代码调用一个函数来格式化字符串,把该函数返回的值赋给一个变量,然后将该值写入控制台:
function formatGreeting(name,city){
var retStr = "";
retStr += "Hello <br>" + name + "/n";
retStr += "Welcome to" + city +"!";
return retStr;
}
var greeting = formatGreeting("Brad","Rome");
console.log(greeting);
你可以在函数中包含不止一个return语句。当函数遇到一个return语句时,函数的执行代码会立即停止。如果return语句包含要返回的值,则返回该值。下面的例子展示了一个函数,他测试输入,并且如果输入是零,就立即返回:
function myFunc(value){
if (value == 0)
return value;
<如果值不为零,要执行的代码>
return value;
}
4、使用匿名函数
到目前为止,你已经看到的所有例子都显示命名的函数。在JavaScript中还可以创建匿名函数。这些函数的好处是:当你调用其他函数时,可以在参数组中直接定义它们。因此,你并不需要正式的定义。
例如,下面的代码定义了一个函数doCalc(),它接受3个参数。前两个参数应该是数值,第3个参数是一个将被调用,并把这两个数值作为参数传入的函数:
function doCalc(num1,num2,calcFunction){
return calcFunction(num1,num2);
}
你可以定义一个函数,然后将不带参数的函数名传递给doCalc(),如下面的例子所示:
function addFunc(n1,n2){
return n1 + n2;
}
doCalc(5,10,addFunc);
但是,你还可以选择在doCalc()的调用中直接使用一个匿名函数,如下面这两个语句所示:
console.log(doCalc(5,10,function(n1,n2){return n1+n2;}));
console.log(doCalc(5,10,function(n1,n2){return n1*n2;}));
你或许可以看到,使用匿名函数的好处是,你不需要正式定义将不再代码的其他任何地方使用的东西。因此,匿名函数使JavaScript代码更简洁易读。