为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在每次调用时,totalmiles不会被置为0呢?

为什么在每次调用时,totalmiles不会被置为0呢?我也有同样的问题

正在回答

1 回答

注意,var totalMiles = 0 这句是处在 calcTotalMiles 函数中。

而你说的每次调用,调用的并不是 calcTotalMiles 这个函数,而是 calcTotalMiles 这个函数的返回值,也就是另一个函数。返回的函数被命名为 dailyTwoMiles 或者 dailyThreeMiles,返回函数的内容是闭包内容:{totalMiles += todayMiles; return totalMiles; },其中并没有对 totalMiles 重置的语句,所以totalMiles不会被重置。

那么问题来了,totalMiles 什么时候被重置。很简单,var totalMiles = 0 处在 calcTotalMiles 函数中,当然是 calcTotalMiles 被调用时会被重置,也就是 var dailyTwoMiles = calcTotalMiles(2) 和 var dailyThreeMiles = calcTotalMiles(3) 这两句在运行时会重置 titalMiles.

1 回复 有任何疑惑可以回复我~
#1

点击获取奖励

可能是沿袭了太多编程OC遗留下来的思想和习惯 .. 对于 'totalMiles在之后的几次调用中 , 值都能保存下来' 这个问题还是比较费解 . 能否将其看作是一个 静态变量 ? 或者是一个指针? 还是说应该换一种思想去看待这一问题呢?
2015-06-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么在每次调用时,totalmiles不会被置为0呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信