每当我做的时候在jshint.com
var this_hold = this;
我收到错误。
我违反了严格的错误。
应用程序是这样的,我需要使用它(从事件处理程序传入)或我需要使用document.getElementById()
这个功能最适合的方式......否则我必须为每个案例写两次。
我希望错误消失了......我不想把它关掉。我希望jshint.com百分百满意。
以下是有关违规评论的问题
/**
*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;
}
答案 0 :(得分:1)
您无法分配到this
;它是只读的。
但是,将this
的值分配给另一个变量不错误,并且它不违反“use stict”规则。
答案 1 :(得分:1)
您可以使用选项validthis
关闭该警告。不幸的是,仅仅通过静态分析就无法检测到所有严格模式违规,因此JSHint会猜测 - 有时它是错误的。
有关validthis
以及我们文档中的其他选项的更多信息:http://www.jshint.com/docs/