function
function
Function 构造函数
创建一个新的Function对象。
在 JavaScript 中, 每个函数实际上都是一个Function对象。
你也可以使用Function
构造函数和a 来定义函数function expression
。
语法
function name([param,[, param,[..., param]]]) {
[statements]
}
name
函数名param
要传递给函数的参数的名称。不同引擎中的最大参数数量不同。statements
包含函数体的语句。
描述
一个被函数声明创建的函数是一个 Function 对象,具有 Function 对象的所有属性、方法和行为。查看 Function 以获取 function 的详细信息。
函数也可以被表达式创建(function expression
)
默认情况下,函数是返回 undefined 的。想要返回一个其他的值,函数必须通过一个 return 语句指定返回值。
有条件的创建函数
函数可以被有条件来声明,这意味着,在一个 if 语句里,函数声明是可以嵌套的。有的浏览器会将这种有条件的声明看成是无条件的声明,无论这里的条件是true还是false,浏览器都会创建函数,详见这篇文章。因此,它们不应该被使用。
函数声明提升
JavaScript 中的函数声明
被提升到了函数定义
。你可以在函数声明
之前使用该函数:
hoisted( // logs "foo"
function hoisted() {
console.log('foo'
}
注意 :函数表达式
function expressions
不会被提升:
notHoisted( // TypeError: notHoisted is not a function
var notHoisted = function() {
console.log('bar'
};
示例
使用function
下面的代码声明了一个函数,该函数返回了销售的总金额, 参数是产品a
,b
,c
分别的销售的数量.
function calc_sales(units_a, units_b, units_c) {
return units_a * 79 + units_b * 129 + units_c * 699;
}
规范
Specification | Status | Comment |
---|---|---|
ECMAScript Latest Draft (ECMA-262)The definition of 'Function definitions' in that specification. | Draft | |
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Function definitions' in that specification. | Standard | |
ECMAScript 5.1 (ECMA-262)The definition of 'Function definition' in that specification. | Standard | |
ECMAScript 3rd Edition (ECMA-262)The definition of 'Function definition' in that specification. | Standard | |
ECMAScript 1st Edition (ECMA-262)The definition of 'Function definition' in that specification. | Standard | Initial definition. Implemented in JavaScript 1.0. |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Allowed in sloppy mode | 49.0 | ? | | | | |
Trailing comma in parameters | ? | ? | 52.0 (52.0) | ? | ? | ? |
Feature | Android | Android Webview | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | No support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Allowed in sloppy mode | No support | 49.0 | ? | | | | | 49.0 |
Trailing comma in parameters | ? | ? | ? | 52.0 (52.0) | ? | ? | ? | ? |