Closures Lab
Last updated
Last updated
Use closures to customize functions
Use closures as a mechanism of encapsulations
In the lab that follows, practice using closures to construct functions that have reference to variables that the execution scope does not.
Create the following functions:
produceDrivingRange()
- Calculates whether a given trip is within range. For example, produceDrivingRange(10)
returns a function that will take two strings as arguments and returns a message stating whether the trip is in range. If foo = produceDrivingRange(10)
, then foo('12th', '15th')
would return "within range by 7"
and foo('12th', '30th')
would return "8 blocks out of range"
. We recommend referencing the test/indexTest.js
for more details.
produceTipCalculator()
- Returns a function that then calculates a tip. For example, produceTipCalculator(.10)
returns a function that calculates ten percent tip on a fare. produceTipCalculator(.20)
returns a function that calculates twenty percent tip on a fare.
createDriver
is a function that returns a Driver
class. The class has reference to a driverId
that is incremented each time a new driver is created. The rest of the code base does not have access to driverId
.
The functions should make use of closures to achieve the specified goals.
Clone :