今天通过看书又重温了下函数,感觉讲的特别详细,特此记录下来供大家分享
函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。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;
}
作用是把两个值加起来返回一个结果。我们注意到,除了 return 语句之外,没有任何声明表示该函数会返回一个值。调用这个函数的示例代码如下:
var result = sum(5, 10);
这个函数会在执行完 return 语句之后停止并立即退出。因此,位于 return 语句之后的任何代码都永远不会执行。例如:
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 ;
不能出现两个命名参数同名的情况。
如果发生以上情况,就会导致语法错误,代码无法执行。