3

每当我这样做时,在 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;
}
4

2 回答 2

1

您不能分配给this; 它是只读的。

但是,将 的值分配this给另一个变量并没有错误,也没有违反“使用 stict”规则。

于 2012-08-13T20:18:28.947 回答
1

您可以使用一个选项validthis来关闭该警告。不幸的是,您不能仅通过静态分析来检测所有严格模式违规,因此 JSHint 会进行猜测——有时它是错误的。

validthis有关我们文档中的更多信息和其他选项:http: //www.jshint.com/docs/

于 2012-08-13T20:29:35.220 回答