Listing 13.16 - Using an IIFE with the quiz app
JS Bin
var quiz = (function () {
var qIndex = 0;
var questions = [
{ question: "7 x 8", answer: "56" },
{ question: "12 x 12", answer: "144" },
{ question: "5 x 6", answer: "30" },
{ question: "9 x 3", answer: "27" }
];
var getQuestion = function () {
qIndex = between(0, questions.length - 1);
return questions[qIndex].question;
};
var checkAnswer = function (userAnswer) {
if (userAnswer === questions[qIndex].answer) {
return "Correct!";
} else {
return "No, the answer is " + questions[qIndex].answer;
}
};
return {
quizMe: getQuestion,
submit: checkAnswer
};
})();
Listing 13.16 - Using an IIFE with the quiz app - Tasks 4, 5 & 6
- Add a hint property for each question.
- Define a getHint function that returns the hint for the current question.
- Add a helpMe property to the public interface, the object returned by getQuiz. The getHint function should be assigned to the helpMe property.
var quiz = (function () {
var qIndex = 0;
var questions = [
{
question: "7 x 8",
answer: "56",
hint: "7 x 4 = 28"
},
{
question: "12 x 12",
answer: "144",
hint: "10 x 12 = 120"
},
{
question: "5 x 6",
answer: "30",
hint: "10 x 6 = 60"
},
{
question: "9 x 3",
answer: "27",
hint: "10 x 3 = 30"
}
];
var getQuestion = function () {
qIndex = between(0, questions.length - 1);
return questions[qIndex].question;
};
var checkAnswer = function (userAnswer) {
if (userAnswer === questions[qIndex].answer) {
return "Correct!";
} else {
return "No, the answer is " + questions[qIndex].answer;
}
};
var getHint = function () {
return questions[qIndex].hint;
};
return {
quizMe: getQuestion,
submit: checkAnswer,
helpMe: getHint
};
})();