我下面的这段代码不是干的。我想要做的是剪切它,因此var = text下面的所有内容只能使用一次而不是两次。
我的概念是,在更大的函数中关闭这两个函数(例如guess())并在其中保持修剪的correctGuess()和incorrectGuess()。
现在问题是,如何从外部范围调用如上所述的嵌套函数。我在想smth就像:guess()。correctGuess()这显然是错的,但我想分享一个概念。
此外,例如,将调用correctGuess(),我们的main guess()函数中的其余命令会被执行吗?
function correctGuess(i) {
totalScore++;
questionNumber++;
var text = "Correct!";
var updatePage = ['<div id="answerDiv">' +
'<h1>' + text + '<h1>' +
'<h2>Total Score: ' + totalScore + '</h2></div>'
];
mainContent[html](updatePage);
$('#answerDiv')[fadeIn]("slow");
$('#answerDiv').append('<button id="nextButton">Next Question</button>');
$('#nextButton').on('click', function() {
if (questionNumber == allQuestions.length && totalScore <= 4) {
results()
} else {
question(questionNumber)
}
})
};
var incorrectGuess = function(i) {
totalScore--;
questionNumber++;
var text = "Wrong!";
var updatePage = ['<div id="answerDiv">' +
'<h1>' + text + '<h1>' +
'<h2>Total Score: ' + totalScore + '</h2></div>'
];
mainContent[html](updatePage);
$('#answerDiv')[fadeIn]("slow");
$('#answerDiv').append('<button id="nextButton">Next Question</button>');
$('#nextButton').on('click', function() {
if (questionNumber == allQuestions.length && totalScore <= 4) {
results();
} else {
question(questionNumber);
}
});
};
答案 0 :(得分:-2)
http://www.w3schools.com/js/js_objects.asp
从您的问题看来,您似乎对对象表示法并不十分熟悉。阅读上面的链接,然后尝试使用2个成员函数创建一个js“guess”对象。正确和错误的猜测。
答案 1 :(得分:-2)
您需要使用this
关键字。
function guess(){
/* do stuff here for guess() */
this.correct = function(){
/* Do stuff for correct */
}
this.wrong = function(){
/* Do stuff for wrong */
}
return this;
}
由于您已退回this
,现在可以使用以下方式访问correct()
和wrong()
函数:
guess().correct();
// AND
guess().wrong();
请注意,每次调用guess().correct()
或guess().wrong()
时都会调用您在guess()内部以及两个嵌套函数外部编写的代码。
如果您不希望任何特定代码在每次“猜测”时执行,无论是对还是错,那么我建议只将correct()
和wrong()
函数存储在对象文字中。
var guess = {
correct: function(){
// Code for "correct" here
},
wrong: function(){
// Code for "wrong" here
}
}
然后您可以使用
访问它们guess.correct();
// AND
guess.wrong();