第8章:03-作为值的函数

作为值的函数

函数可以定义,也可以调用,这是函数最重要的特性。在 JS 中,函数不仅是一种语法,也是值。也就是说,可以将函数赋值给变量,存储在对象的属性或数组的元素中,作为参数传入另一个函数等。


赋值给变量

function fun(x) { 
  return x * x; 
}

// 调用
fun(5)

这个定义创建一个新的函数对象,并将其赋值给变量 fun。函数的名字实际上是看不见的。它(fun)仅仅是变量的名字,这个变量指代函数对象。


赋值给对象的属性

var obj = {
    fun: function(x) { return x * x; }
}

// 调用
obj.fun(5)

函数除了可以赋值给变量,还可以赋值给对象的属性。当函数作为对象的属性调用时,函数就称为方法。


赋值给数组元素

var arr = [function(x) { return x * x; }, 10]

// 调用
arr[0](arr[1])

自定义函数的属性

JS 的函数并不是原始值,而是一种特殊的对象,也就是说,函数可以拥有属性。当函数需要能够跟踪它每次的返回值,而且这些值的信息需要在不同的函数调用过程中持久化。为了做到这一点,可以将这些信息存放到函数对象的一个属性中。如下:

// 由于函数声明被提前了,因此这里是可以在函数声明之前给它的成员赋值
fun.counter = 0;  // 初始化函数对象的计数器属性

// 每次调用这个函数都会返回一个不同的整数
function fun() {
  return fun.counter++;
}

setInterval(() => {
  console.log(fun());
}, 1000);

上面代码中,每次调用函数 fun 都能够让 counter 加1,实现了对值的跟踪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值