1.描述
在 JavaScript 中,每个函数其实都是一个Function对象。
如果一个函数中没有使用 return 语句,则它默认返回undefined。要想返回一个特定的值,则函数必须使用return语句来指定一个要返回的值。(使用new关键字调用一个构造函数除外)。
调用函数时,传递给函数的值被称为函数的实参(值传递),对应位置的函数参数名叫作形参。如果实参是一个包含原始值 (数字,字符串,布尔值) 的变量,则就算函数在内部改变了对应形参的值,返回后,该实参变量的值也不会改变。如果实参是一个对象引用,则对应形参会和该实参指向同一个对象。假如函数在内部改变了对应形参的值,返回后,实参指向的对象的值也会改变:
2.函数定义
2.1函数声明
function name([param,[, param,[..., param]]]) {
[statements]
}
name
函数名
param
要传递给函数的参数的名称。不同引擎中的最大参数数量不同。
statements
包含函数体的语句。
2.2箭头函数表达式
箭头函数表达式有着更短的语法,并在词汇方面结合这个值:
([param] [, param]) => { statements } param => expression
param
参数名称。零参数需要用 () 表示。只有一个参数时不需要括号。(例如 foo => 1)
statements or expression
多个声明 statements 需要用大括号括起来,而单个表达式时则不需要。表达式 expression 也是该函数的隐式返回值。
2.3函数表达式
函数表达式和函数声明非常相似,它们甚至有相同的语法。一个函数表达式可能是一个更大的表达式的一部分。可以定义函数“名字”(例如可以在调用堆栈时使用)或者使用“匿名”函数。函数表达式不会提升,所以不能在定义之前调用。
var myFunction = function name([param[, param[, ... param]]]) { statements }
name
函数名,可以省略。当省略函数名的时候,该函数就成为了匿名函数。
param
传递给函数的参数的名称。
statements
组成函数体的声明语句。