JSLint错误:意外' - '

Kee*_*fer 4 javascript syntax jquery jslint

我在JS文件中遇到两个错误,都是"意外" - "." 它是用于鼠标滚轮滚动的代码(两次都是this.addEventListener( types[--i], handler, false );).我以前从未见过这种语法.它是什么,我应该如何纠正它,使JSLint更快乐?

(function($) {
var types = ['DOMMouseScroll', 'mousewheel'];
$.event.special.mousewheel = {
    setup: function() {
        var i;
        if ( this.addEventListener ) {
            i = types.length;
            while ( i >= 0 ) {
                this.addEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = handler;
        }
    },

    teardown: function() {
        if ( this.removeEventListener ) {
            i = types.length;
            while ( i >= 0 ) {
                this.removeEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = null;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

Ale*_*yne 6

--n语法递减变量.您可能已经看到的稍微更常见的是n++,它是相似的,但会增加变量.

--++之前或可变后出现,并且有细微的差别.当它出现时,它会改变该值,然后返回更改后的值.当它出现时,它返回原始值.直接使用该值时,这会产生影响.

var i;

// affix
i = 1; console.log(i++, i) // 1 2
i = 1; console.log(i--, i) // 1 0

// prefix
i = 1; console.log(++i, i) // 2 2
i = 1; console.log(--i, i) // 0 0
Run Code Online (Sandbox Code Playgroud)

请注意,在操作之后,前缀增量或减量表达式的值如何为i返回相同的值,其中词缀版本不会.

所以,长话短说,JSLint非常喜欢前缀增量运算符.但这应该是等价的:

while ( i >= 0 ) {
  i -= 1;
  this.removeEventListener( types[i], handler, false );
}
Run Code Online (Sandbox Code Playgroud)

通过不使用递减操作的直接结果,它不再重要,操作符的工作方式和返回的内容.它也更加明确,JSLint喜欢显式.