为什么在每次调用时,totalmiles不会被置为0呢?
为什么在每次调用时,totalmiles不会被置为0呢?我也有同样的问题
为什么在每次调用时,totalmiles不会被置为0呢?我也有同样的问题
2015-02-17
注意,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.
举报