在Javascript中,函数不仅是一种语法也是值,可以将函数赋值给变量,存储在对象的属性或数组的元素中,还可以作为参数传入另外一个函数。
function square(x){return x*x}
上面的函数声明创建了一个函数对象,并将其值赋给square这个变量。也就是说square只是指向这个函数的一个变量。
函数对象作为值还可以赋值给其他变量
function square(x){return x*x}
var fun = square
fun(4) //16
可将函数直接作为对象直接量的属性或者数组的元素
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
函数可以作为参数传入其他的函数
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
函数不是原始值,是一种特殊的对象,所以它也可以有属性。所以可以通过给函数对象设置静态变量来给函数一个固定值,比全局变量更为合理。