Javascript Jshint.com |分配给';这';

Javascript Jshint.com |分配给';这';,javascript,jshint,Javascript,Jshint,在jshint.com中,无论何时 var this_hold = this; 我犯了一个错误 我犯了严重的错误 应用程序是这样的,我需要使用它(从事件处理程序传入),或者我需要自己使用document.getElementById() 这就是这个函数的最佳工作方式……否则,我必须为每种情况编写两次 我希望错误消失..我不想关闭它。我希望jshint.com 100%快乐 下面是有问题的函数,其中包含已注释的冲突 /** *vFlipBP - eliminate select_element

在jshint.com中,无论何时

var this_hold = this;
我犯了一个错误

我犯了严重的错误

应用程序是这样的,我需要使用它(从事件处理程序传入),或者我需要自己使用
document.getElementById()

这就是这个函数的最佳工作方式……否则,我必须为每种情况编写两次

我希望错误消失..我不想关闭它。我希望jshint.com 100%快乐

下面是有问题的函数,其中包含已注释的冲突

/**
 *vFlipBP - eliminate select_element in favor of 'this'
 */

function vFlipBP( element_or_string ) {
    var previous_page_element,
        previous_tag_element,
        current_page_element,
        select_element;
    console.log( 'element_or_string ' + element_or_string ); 
    if( typeof ( element_or_string ) === 'string' ) {
        select_element = document.getElementById( element_or_string );
    } else {
        select_element = this;  // violation of strict here
    }
    if( vFlipBP.previous_id === undefined ) {
        var probe_id = select_element.parentElement.firstChild.id;
        if ( ( probe_id === select_element.id ) && ( select_element.parentElement.firstChild.nextSibling ) ) {
            probe_id = select_element.parentElement.firstChild.nextSibling.id;
            vFlipBP.previous_id = probe_id;
        } else {
            vFlipBP.previous_id = select_element.id;
        }
    }
    current_page_element = document.getElementById( select_element.id + '_page' );
    current_page_element.style.display = '';
    select_element.style.background = "#eeeeee";
    if( vFlipBP.previous_id !== select_element.id ) {
        previous_page_element = document.getElementById( vFlipBP.previous_id + '_page' );
        previous_tag_element = document.getElementById( vFlipBP.previous_id );
        if( ( ( previous_page_element !== current_page_element ) ) && ( previous_page_element !== null ) ) {
            previous_page_element.style.display = 'none';
            previous_tag_element.style.background = "#ffffff";
        }
    }
    vFlipBP.previous_id = select_element.id;
}

您不能将
分配给此
;它是只读的


但是,将此的值指定给另一个变量并没有错误,也不会违反“使用粘贴”规则。

您可以使用选项
有效此
关闭该警告。不幸的是,仅仅通过静态分析并不能检测到所有严格的模式冲突,所以JSHint会进行猜测,有时是错误的


关于
validthis
和我们文档中的其他选项的更多信息:

第15行:选择\u元素=此;主角可能是来自JSLint还是什么?如果是这样的话,JSLint真的很笨;它经常犯这样的愚蠢错误。基本上,它没有跟踪变量是用
var
正确声明的这一事实。不幸的是,这些分析工具的解析器非常弱。这就是为什么它会说“可能的严格违反”。嘿,JSHint维护人员对“弱”评论表示抱歉:-)没有必要为不使用选项而感到自豪。JSHint不是用来告诉您如何编写代码的,而是用来帮助您发现潜在问题的。由于静态分析只能得到目前为止的结果,我们总是会有误报。好吧……我最终还是做到了……没有设置选项……没有错误……实际上有多个修复程序……请看这里的帖子。。。。。