有人可以在我的jQuery书中解释这一点吗?我不明白变量初始化的目的。
以下是书中的一些解释:
taskController会记住它是否已在一个名为 initialised 的局部变量中被初始化。这确保无论init方法被调用多少次,它都只会实际初始化一次控制器
jQuery代码:
tasksController = function() {
var taskPage;
var initialised = false;
return {
init : function(page) {
if (!initialised) {
taskPage = page;
$(taskPage).find('[required="required"]').prev('label').append( '<span>*</span>').children( 'span').addClass('required');
$(taskPage).find('tbody tr:even').addClass('even');
$(taskPage).find('#btnAddTask').click(function(evt) {
evt.preventDefault();
$(taskPage).find('#taskCreation').removeClass('not');
});
$(taskPage).find('tbody tr').click(function(evt) {
$(evt.target).closest('td').siblings().andSelf().toggleClass('rowHighlight');
});
$(taskPage).find('#tblTasks tbody').on('click', '.deleteRow', function(evt) {
evt.preventDefault();
$(evt.target).parents('tr').remove();
});
$(taskPage).find('#saveTask').click(function(evt) {
evt.preventDefault();
if ($(taskPage).find('form').valid()) {
var task = $('form').toObject();
$('#taskRow').tmpl(task).appendTo($(taskPage).find('#tblTasks tbody'));
}
});
initialised = true;
}
}
}
}();
答案 0 :(得分:1)
初始化此控制器时,&#34;初始化&#34;变量设置为false。在控制器内调用init函数时,其中的第一行检查&#34;初始化&#34;变量不是真的(并且它不是,它是假的),然后执行该代码块的其余部分。在该块的最后,您可以看到此变量设置为true。
这意味着下次运行此函数时,本地变量的值将为true,因此当您调用init函数时,它将首先重新评估该语句。从那时起&#34;初始化&#34;是的,检查&#34;是初始变量不是真的&#34;将为false,因此该块中的代码将不会执行。