当函式在那个语言中可以被视为跟其他的变数一样时,我们称那样的程式语言拥有一级函式。例如,函式可以作为参数传递到另一个函式,可以被另一个函式作为回传值且可以被当作值一样指派到另一个变数。
我们指派一个匿名函式 到 变数 中,然后在这个变数后面加上括弧 () 的方式来调用那个函式。
备注: 即使你已经为函式命名了,你仍然可以透过这个变数的名称来调用它。有命名的函数在你除错时是有帮助的。但是这并不会影响我们调用它的方式。
我们将 sayHello() 函式当成是变数传递到 greeting() 函式,这说明了我们将函式视为是一个值来使用它。
备注: 将函式作为参数传递到另一个函式时,被当作参数传递的那个函式我们称之为回调函式 Callback function。 sayHello 就是一个回调函式。
在这个例子中,我们需要从另一个函式中回传函式回来 - 在 JavaScript 中,我们可以回传函式是因为我们将函式当成是一个 值 。
回到刚才的例子,现在我们需要调用 sayHello 函式与它所回传的匿名函式 (Anonymous Function)。为了达成这个目标,我们有两种方式:
备注: 如果你直接调用 sayHello 的话,你必须再使用另一个变数来储存之后再调用它,调用 sayHello 只会回传函式回来而非调用它所回传的函式。
