私はこのJavascript関数を持っています:
function Card(term, def, terms, curTerm) {
this.term = term;
this.def = def;
this.terms = terms;
this.curTerm = curTerm;
this.show = function() {
that = this;
var html = createCard(that.term, that.def);
$('body').append(html);
$('input[type=text]').focus();
$('.answer').on('click', function(event) {
event.preventDefault();
answer = $(this).parent().serializeArray()[0].value;
// answer correct
if (that.term === answer) {
$('.card').addClass('correct');
$('form').replaceWith('<h2>Correct! ' + that.term + '</h2>');
setTimeout(function () {that.destroy(terms, curTerm + 1);}, 1500);
// answer incorrect
} else {
$('.card').addClass('incorrect');
$('form').replaceWith('<h2>Incorrect! ' + that.term + '</h2>');
setTimeout(function () {that.destroy(terms, curTerm);}, 1500);
}
});
};
私が問題を抱えている行はsetTimeout(function () {that.destroy(terms, curTerm + 1);}, 1500);
. もともと私は持っていましたがsetTimeout(that.destroy(terms, curTerm + 1), 1500);
、呼び出したばかりのタイムアウトを設定しませんでしたthat.destroy
。匿名関数に入れたときにすぐに呼び出されないのはなぜですか? これは閉鎖と関係がありますか?クロージャーを作成する必要があるようですが、確実に知るのに十分なことがわかっていません。
任意の考えをいただければ幸いです。