Javascript:重复函数
我有一个内置Javascript:重复函数,javascript,Javascript,我有一个内置if的函数。如果if返回false我需要再次重复该函数 this.reloadComment = function () { var previous_comment = self.Comment(); $.getJSON(Routes.my_service_search_path(self.ID), {}, function (data) { if (data.Comment.ID != previous_comment.ID
if
的函数。如果if
返回false
我需要再次重复该函数
this.reloadComment = function () {
var previous_comment = self.Comment();
$.getJSON(Routes.my_service_search_path(self.ID), {}, function (data) {
if (data.Comment.ID != previous_comment.ID) {
self.Comment(data.Comment);
} else {
// repeat
}
});
};
如果函数内的
self
与函数外的相同,则只需:
} else {
// repeat
self.reloadComment();
}
如果没有,则使用命名函数;既然你有一个很好的名字,你可以用它,当你需要重复它的时候,就叫它:
function reloadComment() {
var previous_comment = self.Comment();
$.getJSON(Routes.my_service_search_path(self.ID), {}, function (data) {
if (data.Comment.ID != previous_comment.ID) {
self.Comment(data.Comment);
} else {
// repeat
reloadComment();
}
});
}
this.reloadComment = reloadComment;
如果不需要支持IE8,可以使用单个命名函数表达式:
this.reloadComment = function reloadComment() {
var previous_comment = self.Comment();
$.getJSON(Routes.my_service_search_path(self.ID), {}, function (data) {
if (data.Comment.ID != previous_comment.ID) {
self.Comment(data.Comment);
} else {
// repeat
reloadComment();
}
});
};
…但在IE8(及更早版本)上;如果你经常这样做,结果就是浪费。(不过,在这种特殊情况下,它不会产生任何其他影响;它仍然有效。在其他情况下,它也会产生影响,所以我完全不使用需要处理IE8的NFE代码。)试试这个
this.reloadComment = function () {
var me = this;
var previous_comment = self.Comment();
$.getJSON(Routes.my_service_search_path(self.ID), {}, function (data) {
if (data.Comment.ID != previous_comment.ID) {
self.Comment(data.Comment);
} else {
me.reloadComment();
}
});
};
有什么问题吗?只需再次调用函数。@FrédéricHamidi问题是不知道如何在函数内部执行它