关于javascript:Jshint.com |

Jshint.com | Assigning to 'this'

在一次jshint.com I do

1
var this_hold = this;

我得到的错误。

I get a违反了严格的误差。

应用程序,我需要的是搜索(无论是在与通过在从一个事件处理程序)或i需要拉自己的document.getElementById()元素使用

这个函数只是知识的最佳...otherwise作品我要写它两次,一次为每个案例。

我想错误了,Don’t想要关掉它。我想jshint.com 100%的快乐。

这是在该函数的问题与冲突

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 *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;
}


您可以使用选项validthis关闭该警告。不幸的是,您不能仅仅通过执行静态分析来检测所有严格的模式冲突,所以jshint进行了猜测,有时是错误的。

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


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

但是,将this的值赋给另一个变量并不是错误的,也不违反"使用stict"规则。