函数
函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方任何时候调用执行。ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体。函数的基本语法如下:
function functionName(arg0, arg1,...,argN){
statements
}
//下面是一个函数示例:
function sayHi(name, message) {
alert("Hello " + name "," + message);
}
这个函数可以通过其函数名来调用,后面还要加上一对圆括号和参数。调用sayHi()函数的代码如下所示:
sayHi("Nicholas","how are you today?");
这个函数输出的结果是:“Hello Nicholas,how are you today?”。函数中定义中的命名参数name和message被用作了字符串拼接的两个操作数,而结果最终通过警告框显示了出来。
ECMAScript中的函数在定义时不必指定是否返回值。实际上,任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值。如下面的例子:
function sum(num1,num2) {
return num1 + num2;
}
这个sum()函数的作用是把两个值加起来返回一个结果。我们注意到,除了return语句之外,没有任何声明表示该函数会返回一个值。调用这个函数的示例代码如下:
var result = sum(5,10);
这个函数会在执行完return语句之后停止并立即退出。因此,位于return语句之后的任何代码都永远不会执行。例如:
function sum(num1,num2) {
return num1 + num2;
alert("Hello world"); //永远不会执行
}
在这个例子中,由于调用alert()函数的语句位于return语句之后,因此永远不会显示警告框。当然,一个函数中也可以包含多个return语句,如下面这个例子中所示:
function diff(num1, num2) {
if(num1 < num2) {
return num2-num1;
} else {
return num1 - num2;
}
}
这个例子中定义的diff()函数用于计算两个数值的差。如果第一个数比第二个小,则用第二个数减第一个数;否则,用第一个数减第二个数。代码中的两个分支都具有自己的return语句,分别用于执行正确的计算。
另外,return语句也可以不带有任何返回值。在这种情况下,函数在停止执行后将返回undefined值。这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。比如在下面这个例子中,就不会显示警告框:
function sayHi(name,message) {
return;
alert("Hello " + name + "," + message); //永远不会调用
}
严格模式对函数有一些限制:
- 不能把函数命名为eval或arguments;
- 不能把参数命名为eval或arguments;
- 不能出现两个命名参数同名的情况。
如果发生以上情况,就会导致语法错误,代码无法执行。