在Javascript中,函數(shù)不僅是一種語法也是值,可以將函數(shù)賦值給變量,存儲在對象的屬性或數(shù)組的元素中,還可以作為參數(shù)傳入另外一個函數(shù)。
function square(x){return x*x}
上面的函數(shù)聲明創(chuàng)建了一個函數(shù)對象,并將其值賦給square這個變量。也就是說square只是指向這個函數(shù)的一個變量。
函數(shù)對象作為值還可以賦值給其他變量
function square(x){return x*x}
var fun = square
fun(4) //16
可將函數(shù)直接作為對象直接量的屬性或者數(shù)組的元素
var o = {x:24, square:function(x){return x*x}}
o.square(o.x) //576
var a = [function(x){return x*x}, 'hello', 22]
a[0](a[2]) //484
函數(shù)可以作為參數(shù)傳入其他的函數(shù)
function add(x,y){return x+y}
function multiply(x,y){return x*y}
function operate(calculate,x,y)
{
return calculate(x,y)
}
operate(add,21,15) //36
operate(multiply,7,9) //63
函數(shù)不是原始值,是一種特殊的對象,所以它也可以有屬性。所以可以通過給函數(shù)對象設(shè)置靜態(tài)變量來給函數(shù)一個固定值,比全局變量更為合理。