it("should use lexical scoping to synthesise functions", function () {
function makeMysteryFunction(makerValue) {
var newFunction = function doMysteriousThing(param) {
return makerValue + param;
};
return newFunction;
}
var mysteryFunction3 = makeMysteryFunction(3);
var mysteryFunction5 = makeMysteryFunction(5);
expect(mysteryFunction3(10) + mysteryFunction5(5)).toBe(23);
});
mysteryFunction3 은 3이라는 인자를 전달하는 makeMysteryFunction(3)이 되는 것이고,
mysteryfunction3(10)은 이 함수새 새로운 인자를 다시 전달하게 된다.
makerValue+param을 리턴하므로 3+10=13
마찬가지로 mysteryFunction5(5)의 리턴값은 10으로 13+10=23이다.