使用变量

时间:2016-04-15 03:58:12

标签: javascript

有人可以在我的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;
            }
        } 
    } 
}();

1 个答案:

答案 0 :(得分:1)

初始化此控制器时,&#34;初始化&#34;变量设置为false。在控制器内调用init函数时,其中的第一行检查&#34;初始化&#34;变量不是真的(并且它不是,它是假的),然后执行该代码块的其余部分。在该块的最后,您可以看到此变量设置为true。

这意味着下次运行此函数时,本地变量的值将为true,因此当您调用init函数时,它将首先重新评估该语句。从那时起&#34;初始化&#34;是的,检查&#34;是初始变量不是真的&#34;将为false,因此该块中的代码将不会执行。