为什么在检查代码块中的变量定义时jslint会出错

时间:2012-09-26 03:50:59

标签: javascript jquery jslint

我有以下代码:

         $('#modal .update-title')
            .change(function () {
                var title = $('option:selected', this).prop('title');
                $(this).prop('title', title);

                // For the question screen, after the initial set up 
                // changes move the title to the title input field.
                if ($(this).data('propagate-title') === 'yes') {
                    var m = this.id.match(/^modal_TempRowKey_(\d+)$/);
                    if (m) {
                        $("#modal_Title_" + m[1]).val(title);
                    }
                }
            });

当我运行jslint时,它给出了以下错误:

   Combine this with the previous 'var' statement.
   var m = this.id.match(/^modal_TempRowKey_(\d+)$/);

是jslint错了还是我错了?

1 个答案:

答案 0 :(得分:4)

使用if条件不会创建新范围。因此,如果条件为真,则仅存在变量m。所以这就是你能做的事情

$('#modal .update-title').change(function () {
    var title = $('option:selected', this).prop('title'),
    m = null; // or just m;
    $(this).prop('title', title);

    // For the question screen, after the initial set up 
    // changes move the title to the title input field.
    if ($(this).data('propagate-title') === 'yes') {
        m = this.id.match(/^modal_TempRowKey_(\d+)$/);
        if (m) {
            $("#modal_Title_" + m[1]).val(title);
        }
    }
});