概述
function 关键字可用来在一个表达式中定义一个函数。
语法
function [name]([param1[, param2[, ..., paramN]]]) {
statements
}
参数
name- 函数名称。可被忽略,此种情况下的函数是匿名函数(anonymous)。 函数名称只是函数体中的一个本地变量。
paramN- 被传递给函数的一个参数名称。一个函数至多拥有 255 个参数。
statements- 构成函数体的语句。
描述
函数表达式(function expression)非常类似于函数声明(function statement)(详情查看函数声明),并且拥有几乎相同的语法。函数表达式与函数声明的最主要区别是函数名称(function name),在函数表达式中可忽略它,从而创建匿名函数(anonymous functions)。更多信息请查看函数和函数作用域。
示例
下例定义了一个未命名的函数,并把它赋值给 x。该函数返回它的参数的平方:
var x = function(y) {
return y * y;
};
命名函数表达式(Named function expression)
如果你想在函数体内部引用当前函数,则需要创建一个命名函数表达式。然后函数名称将会(且只会)作为函数体(作用域内)的本地变量。这样也可以避免使用非标准的 arguments.callee 属性。
var math = {
'factorial': function factorial(n) {
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
};
规范
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 3rd Edition. | Standard | Initial definition. Implemented in JavaScript 1.5 |
| ECMAScript 5.1 (ECMA-262) Function definition |
Standard | |
| ECMAScript 6 (ECMA-262) Function defintions |
Release Candidate |
浏览器兼容性
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |