From: David Mark on
lorlarz wrote:

[...]

>
> This summarizes (I believe completely) what I commented out or fixed
> to make
> JSLint make it all the way through: The following refers to the
> development version
> of 1.4.2 which you can download from http://jquery.com :

No thanks! :)

>
> 2649 changed to: var origContext = context || document; // = contents
> before = contents removed
>
>
> lines 2663 to 2673 commented out

LOL.

>
> 2985 changed to: var nodeCheck = part.toLowerCase(); // = part
> before = part removed
>
> 2995 changed to: var nodeCheck = part.toLowerCase(); // = part before
> = part removed

Huh?

>
>
>
> 3317 changed to Expr.match[ type ] = new
> RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*
> \))/.source) ); // parentheses added on expression after + sign
>
>
> 4167 commented out
>
> 4775 commented out
>
>
> 5994 prevOffsetParent = offsetParent; offsetParent =
> elem.offsetParent; // (comma that was in middle changed to semi-colon)
>
> 6035 checkDiv.style.position = "fixed"; checkDiv.style.top =
> "20px"; // (comma that was in middle changed to semi-colon)
>
> 6040 innerDiv.style.overflow = "hidden"; innerDiv.style.position =
> "relative"; // (comma that was in middle changed to semi-colon)

Yeah, I hate that one. Dojo was (is) chock full of those too. Makes
you stop and wonder if there is a missing "var".

From: lorlarz on
On Feb 28, 9:09 pm, lorlarz <lorl...(a)gmail.com> wrote:
> On Feb 28, 4:03 pm, David Mark <dmark.cins...(a)gmail.com> wrote:> lorlarz wrote:
> > > Results of jQuery new production version and last production version
> > > on JSLint
> > > (http://www.jslint.com/)
>
> [snip]
>
>
>
> > Don't bother running the minified versions through.  That won't be
> > productive.  Use the full versions.
>
> I commented out a couple of regular expression things JSLint could not
> stand and
> made what I saw as about a half dozen corrections AND was able to run
> all the
> non-minimized _WITH_ COMMENTS REMOVED jQuery 1.4.2 through JSLint and
> get
> a full report.  Looks quite benigh (though there were the half dozen
> errors and
> a couple or regular expressions commented out).  Here is the report
> AFTER those
> changes:  Most, _though NOT all_ of the report, look benign AFTER all
> that:
>
> Error:
> Problem at line 1 character 20: Expected an identifier and instead saw
> 'undefined' (a reserved word).
>
> (function( window, undefined ) {
>
> Problem at line 13 character 48: Unescaped '-'.
>
> quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
>
> Problem at line 33 character 20: 'hasOwnProperty' is a really bad
> name.
>
> hasOwnProperty = Object.prototype.hasOwnProperty,
>
> Problem at line 145 character 20: Use '===' to compare with 'null'.
>
> return num == null ?
>
> Problem at line 261 character 41: Use '!==' to compare with 'null'.
>
> if ( (options = arguments[ i ]) != null ) {
>
> Problem at line 356 character 48: Use '===' to compare with 'null'.
>
> toplevel = window.frameElement == null;
>
> Problem at line 488 character 20: Use '!==' to compare with 'null'.
>
> if ( array != null ) {
>
> Problem at line 489 character 31: Use '===' to compare with 'null'.
>
> if ( array.length == null || typeof array === "string" ||
> jQuery.isFunctio...
>
> Problem at line 536 character 18: Confusing use of '!'.
>
> if ( !inv !== !callback( elems[ i ], i ) ) {
>
> Problem at line 536 character 18: Confusing use of '!'.
>
> if ( !inv !== !callback( elems[ i ], i ) ) {
>
> Problem at line 550 character 24: Use '!==' to compare with 'null'.
>
> if ( value != null ) {
>
> Problem at line 593 character 4: Mixed spaces and tabs.
>
> [];
>
> Problem at line 689 character 21: Missing '()' invoking a constructor.
>
> return (new Date).getTime();
>
> Problem at line 753 character 13: 'e' is already defined.
>
> } catch(e) {
>
> Problem at line 1270 character 28: Expected an assignment or function
> call and instead saw an expression.
>
> parent.selectedIndex;
>
> Problem at line 1273 character 43: Expected an assignment or function
> call and instead saw an expression.
>
> parent.parentNode.selectedIndex;
>
> Problem at line 1362 character 55: 'eventHandle' is already defined.
>
> eventHandle = elemData.handle, eventHandle;
>
> Problem at line 1471 character 106: Missing semicolon.
>
> jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\
> \.)?")...
>
> Problem at line 1495 character 25: 'j' is already defined.
>
> for ( var j = pos || 0; j < eventType.length; j++ ) {
>
> Problem at line 1500 character 34: Use '===' to compare with 'null'..
>
> if ( pos == null ) {
>
> Problem at line 1509 character 30: Use '!==' to compare with 'null'.
>
> if ( pos != null ) {
>
> Problem at line 1515 character 48: Use '!==' to compare with 'null'.
>
> if ( eventType.length === 0 || pos != null && eventType.length === 1 )
> {
>
> Problem at line 1619 character 26: 'e' is already defined.
>
> } catch (e) {}
>
> Problem at line 1633 character 30: Bad assignment.
>
> event = arguments[0] = jQuery.event.fix( event || window.event );
>
> Problem at line 1644 character 20: 'events' is already defined.
>
> var events = jQuery.data(this, "events"), handlers =
> events[ event.type ];
>
> Problem at line 1644 character 60: 'handlers' is already defined.
>
> var events = jQuery.data(this, "events"), handlers =
> events[ event.type ];
>
> Problem at line 1704 character 26: Use '===' to compare with 'null'..
>
> if ( event.pageX == null && event.clientX != null ) {
>
> Problem at line 1704 character 51: Use '!==' to compare with 'null'.
>
> if ( event.pageX == null && event.clientX != null ) {
>
> Problem at line 1955 character 19: Use '!==' to compare with 'null'.
>
> if ( data != null || val ) {
>
> Problem at line 2154 character 39: Use '!==' to compare with 'null'.
>
> while ( (type = types[ i++ ]) != null ) {
>
> Problem at line 2182 character 18: Don't make functions within a loop.
>
> });
>
> Problem at line 2190 character 6: Missing semicolon.
>
> }
>
> Problem at line 2283 character 56: Unescaped '['.
>
> var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"]
> [^'"]*['"]...
>
> Problem at line 2283 character 81: Unescaped '['.
>
> var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"]
> [^'"]*['"]...
>
> Problem at line 2347 character 21: 'ret' is already defined.
>
> var ret = seed ?
>
> Problem at line 2367 character 26: Use '===' to compare with 'null'..
>
> if ( pop == null ) {
>
> Problem at line 2383 character 23: 'cur' used out of scope.
>
> Sizzle.error( cur || selector );
>
> Problem at line 2390 character 42: Use '!==' to compare with 'null'.
>
> for ( var i = 0; checkSet[i] != null; i++ ) {
>
> Problem at line 2396 character 25: 'i' is already defined.
>
> for ( var i = 0; checkSet[i] != null; i++ ) {
>
> Problem at line 2396 character 42: Use '!==' to compare with 'null'.
>
> for ( var i = 0; checkSet[i] != null; i++ ) {
>
> Problem at line 2443 character 40: 'match' is already defined.
>
> var type = Expr.order[i], match;
>
> Problem at line 2452 character 26: Use '!==' to compare with 'null'.
>
> if ( set != null ) {
>
> Problem at line 2473 character 64: Use '!==' to compare with 'null'.
>
> if ( (match = Expr.leftMatch[ type ].exec( expr )) != null &&
> match[2] ) {
>
> Problem at line 2498 character 58: Use '!==' to compare with 'null'.
>
> for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
>
> Problem at line 2503 character 51: Use '!==' to compare with 'null'.
>
> if ( inplace && found != null ) {
>
> Problem at line 2534 character 27: Use '===' to compare with 'null'..
>
> if ( anyFound == null ) {
>
> Problem at line 2554 character 35: Unescaped '-'.
>
> ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
>
> Problem at line 2555 character 39: Unescaped '-'.
>
> CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
>
> Problem at line 2556 character 48: Unescaped '-'.
>
> NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
>
> Problem at line 2557 character 41: Unescaped '-'.
>
> ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)
> \3|)\s*...
>
> Problem at line 2558 character 38: Unescaped '-'.
>
> TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
>
> Problem at line 2559 character 65: Unescaped '-'.
>
> CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
>
> Problem at line 2560 character 69: Unescaped '-'.
>
> POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
>
> Problem at line 2561 character 39: Unescaped '-'.
>
> PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\
> (\)]*)...
>
> Problem at line 2611 character 29: 'i' is already defined.
>
> for ( var i = 0, l = checkSet.length; i < l; i++ ) {
>
> Problem at line 2611 character 36: 'l' is already defined.
>
> for ( var i = 0, l = checkSet.length; i < l; i++ ) {
>
> Problem at line 2612 character 30: 'elem' is already defined.
>
> var elem = checkSet[i];
>
> Problem at line 2633 character 61: 'nodeCheck' used out of scope.
>
> checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
>
> Problem at line 2643 character 66: 'nodeCheck' used out of scope.
>
> checkFn("previousSibling", part, doneName, checkSet, nodeCheck,
> isXML);
>
> Problem at line 2678 character 56: Use '!==' to compare with 'null'.
>
> for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
>
> Problem at line 2758 character 29: Expected an assignment or function
> call and instead saw an expression.
>
> elem.parentNode.selectedIndex;
>
> Problem at line 2771 character 20: Wrap the /regexp/ literal in parens
> to disambiguate the slash operator.
>
> return /h\d/i.test( elem.nodeName );
>
> Problem at line 2801 character 20: Wrap the /regexp/ literal in parens
> to disambiguate the slash operator.
>
> return /input|select|textarea|button/i.test(elem.nodeName);
>
> Problem at line 2841 character 29: 'i' is already defined.
>
> for ( var i = 0, l = not.length; i < l; i++ ) {
>
> Problem at line 2865 character 32: Expected a 'break' statement before
> 'case'.
>
> node = elem;
>
> Problem at line 2915 character 34: Use '!==' to compare with 'null'.
>
> elem[ name ] != null ?
>
> Problem at line 2922 character 27: Use '===' to compare with 'null'..
>
> return result == null ?
>
> Problem at line 2958 character 6: Don't make functions within a loop.
>
> }));
>
> Problem at line 2973 character 77: Expected an assignment or function
> call and instead saw an expression.
>
> Array.prototype.slice.call( document.documentElement.childNodes, 0 )
> [0].node...
>
> Problem at line 2987 character 29: 'i' is already defined.
>
> for ( var i = 0; array[i]; i++ ) {
>
> Problem at line 3070 character 34: Missing '()' invoking a
> constructor.
>
> id = "script" + (new Date).getTime();
>
> Problem at line 3298 character 11: 'slice' is already defined.
>
> slice = Array.prototype.slice;
>
> Problem at line 3303 character 20: Confusing use of '!'.
>
> return !!qualifier.call( elem, i, elem ) === keep;
>
> Problem at line 3706 character 49: Use '!==' to compare with 'null'.
>
> for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
>
> Problem at line 3723 character 49: Use '!==' to compare with 'null'.
>
> for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
>
> Problem at line 3891 character 22: 'root' was used before it was
> defined.
>
> function root( elem, cur ) {
>
> Problem at line 3990 character 50: Use '!==' to compare with 'null'.
>
> for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
>
> Problem at line 4049 character 25: 'i' is already defined.
>
> for ( var i = 0; ret[i]; i++ ) {
>
> Problem at line 4070 character 50: Use '!==' to compare with 'null'.
>
> for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
>
> Problem at line 4175 character 13: Function statements cannot be
> placed in blocks. Use a function expression or move the statement to
> the top of the outer function.
>
> function getWH() {
>
> Problem at line 4281 character 24: 'name' is already defined.
>
> for ( var name in options ) {
>
> Problem at line 4385 character 24: Use '===' to compare with 'null'..
>
> return val == null ?
>
> Problem at line 4542 character 41: Bad operand.
>
> if ( s.global && ! jQuery.active++ ) {
>
> Problem at line 4694 character 17: 'e' is already defined.
>
> } catch(e) { }
>
> Problem at line 4706 character 17: 'e' is already defined.
>
> } catch(e) {
>
> Problem at line 4725 character 26: 'complete' was used before it was
> defined.
>
> function complete() {
>
> Problem at line 4739 character 25: 'trigger' is already defined.
>
> function trigger(type, args) {
>
> Problem at line 4828 character 29: 'buildParams' was used before it
> was defined.
>
> function buildParams( prefix, obj ) {
>
> Problem at line 4838 character 45: Use '!==' to compare with 'null'.
>
> } else if ( !traditional && obj != null && typeof obj === "object" ) {
>
> Problem at line 4856 character 19: Unescaped '-'.
>
> rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
>
> Problem at line 4935 character 24: Use '===' to compare with 'null'..
>
> } else if ( fn == null || bool ) {
>
> Problem at line 4990 character 31: Use '!==' to compare with 'null'.
>
> if ( opt.overflow != null ) {
>
> Problem at line 5134 character 35: Use '!==' to compare with 'null'.
>
> if ( this.elem[this.prop] != null && (!this.elem.style ||
> this.elem.style[t...
>
> Problem at line 5134 character 94: Use '===' to compare with 'null'..
>
> if ( this.elem[this.prop] != null && (!this.elem.style ||
> this.elem.style[t...
>
> Problem at line 5195 character 43: Use '!==' to compare with 'null'.
>
> if ( this.options.display != null ) {
>
> Problem at line 5259 character 1: Mixed spaces and tabs.
>
> fast: 200,
>
> Problem at line 5260 character 1: Mixed spaces and tabs.
>
> _default: 400
>
> Problem at line 5269 character 60: Use '!==' to compare with 'null'.
>
> if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
>
> Problem at line 5286 character 15: 'genFx' was used before it was
> defined.
>
> function genFx( type, num ) {
>
> Problem at line 5558 character 25: Use '===' to compare with 'null'..
>
> return size == null ? null : this;

It occurs to me it would be useful to provide modified jquery txt --
1.4.2 the corrected and commented out
version (with comments OTHERWISE deleted) SO you can line up the line
numbers in the report, quoted above with the actual lines of text
where the errors occur. FOR this I provide that modified 1.4.2 I fed
in the get the JSLint report. You can find it at:

http://mynichecomputing.org/modJTjquery-1_4_2.txt
From: David Mark on
lorlarz wrote:
> On Feb 28, 9:09 pm, lorlarz <lorl...(a)gmail.com> wrote:
>> On Feb 28, 4:03 pm, David Mark <dmark.cins...(a)gmail.com> wrote:> lorlarz wrote:
>>>> Results of jQuery new production version and last production version
>>>> on JSLint
>>>> (http://www.jslint.com/)
>> [snip]
>>
>>
>>
>>> Don't bother running the minified versions through. That won't be
>>> productive. Use the full versions.
>> I commented out a couple of regular expression things JSLint could not
>> stand and
>> made what I saw as about a half dozen corrections AND was able to run
>> all the
>> non-minimized _WITH_ COMMENTS REMOVED jQuery 1.4.2 through JSLint and
>> get
>> a full report. Looks quite benigh (though there were the half dozen
>> errors and
>> a couple or regular expressions commented out). Here is the report
>> AFTER those
>> changes: Most, _though NOT all_ of the report, look benign AFTER all
>> that:
>>
>> Error:
>> Problem at line 1 character 20: Expected an identifier and instead saw
>> 'undefined' (a reserved word).
>>
>> (function( window, undefined ) {
>>
>> Problem at line 13 character 48: Unescaped '-'.
>>
>> quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
>>
>> Problem at line 33 character 20: 'hasOwnProperty' is a really bad
>> name.
>>
>> hasOwnProperty = Object.prototype.hasOwnProperty,
>>
>> Problem at line 145 character 20: Use '===' to compare with 'null'.
>>
>> return num == null ?
>>
>> Problem at line 261 character 41: Use '!==' to compare with 'null'.
>>
>> if ( (options = arguments[ i ]) != null ) {
>>
>> Problem at line 356 character 48: Use '===' to compare with 'null'.
>>
>> toplevel = window.frameElement == null;
>>
>> Problem at line 488 character 20: Use '!==' to compare with 'null'.
>>
>> if ( array != null ) {
>>
>> Problem at line 489 character 31: Use '===' to compare with 'null'.
>>
>> if ( array.length == null || typeof array === "string" ||
>> jQuery.isFunctio...
>>
>> Problem at line 536 character 18: Confusing use of '!'.
>>
>> if ( !inv !== !callback( elems[ i ], i ) ) {
>>
>> Problem at line 536 character 18: Confusing use of '!'.
>>
>> if ( !inv !== !callback( elems[ i ], i ) ) {
>>
>> Problem at line 550 character 24: Use '!==' to compare with 'null'.
>>
>> if ( value != null ) {
>>
>> Problem at line 593 character 4: Mixed spaces and tabs.
>>
>> [];
>>
>> Problem at line 689 character 21: Missing '()' invoking a constructor.
>>
>> return (new Date).getTime();
>>
>> Problem at line 753 character 13: 'e' is already defined.
>>
>> } catch(e) {
>>
>> Problem at line 1270 character 28: Expected an assignment or function
>> call and instead saw an expression.
>>
>> parent.selectedIndex;
>>
>> Problem at line 1273 character 43: Expected an assignment or function
>> call and instead saw an expression.
>>
>> parent.parentNode.selectedIndex;
>>
>> Problem at line 1362 character 55: 'eventHandle' is already defined.
>>
>> eventHandle = elemData.handle, eventHandle;
>>
>> Problem at line 1471 character 106: Missing semicolon.
>>
>> jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\
>> \.)?")...
>>
>> Problem at line 1495 character 25: 'j' is already defined.
>>
>> for ( var j = pos || 0; j < eventType.length; j++ ) {
>>
>> Problem at line 1500 character 34: Use '===' to compare with 'null'.
>>
>> if ( pos == null ) {
>>
>> Problem at line 1509 character 30: Use '!==' to compare with 'null'.
>>
>> if ( pos != null ) {
>>
>> Problem at line 1515 character 48: Use '!==' to compare with 'null'.
>>
>> if ( eventType.length === 0 || pos != null && eventType.length === 1 )
>> {
>>
>> Problem at line 1619 character 26: 'e' is already defined.
>>
>> } catch (e) {}
>>
>> Problem at line 1633 character 30: Bad assignment.
>>
>> event = arguments[0] = jQuery.event.fix( event || window.event );
>>
>> Problem at line 1644 character 20: 'events' is already defined.
>>
>> var events = jQuery.data(this, "events"), handlers =
>> events[ event.type ];
>>
>> Problem at line 1644 character 60: 'handlers' is already defined.
>>
>> var events = jQuery.data(this, "events"), handlers =
>> events[ event.type ];
>>
>> Problem at line 1704 character 26: Use '===' to compare with 'null'.
>>
>> if ( event.pageX == null && event.clientX != null ) {
>>
>> Problem at line 1704 character 51: Use '!==' to compare with 'null'.
>>
>> if ( event.pageX == null && event.clientX != null ) {
>>
>> Problem at line 1955 character 19: Use '!==' to compare with 'null'.
>>
>> if ( data != null || val ) {
>>
>> Problem at line 2154 character 39: Use '!==' to compare with 'null'.
>>
>> while ( (type = types[ i++ ]) != null ) {
>>
>> Problem at line 2182 character 18: Don't make functions within a loop.
>>
>> });
>>
>> Problem at line 2190 character 6: Missing semicolon.
>>
>> }
>>
>> Problem at line 2283 character 56: Unescaped '['.
>>
>> var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"]
>> [^'"]*['"]...
>>
>> Problem at line 2283 character 81: Unescaped '['.
>>
>> var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"]
>> [^'"]*['"]...
>>
>> Problem at line 2347 character 21: 'ret' is already defined.
>>
>> var ret = seed ?
>>
>> Problem at line 2367 character 26: Use '===' to compare with 'null'.
>>
>> if ( pop == null ) {
>>
>> Problem at line 2383 character 23: 'cur' used out of scope.
>>
>> Sizzle.error( cur || selector );
>>
>> Problem at line 2390 character 42: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0; checkSet[i] != null; i++ ) {
>>
>> Problem at line 2396 character 25: 'i' is already defined.
>>
>> for ( var i = 0; checkSet[i] != null; i++ ) {
>>
>> Problem at line 2396 character 42: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0; checkSet[i] != null; i++ ) {
>>
>> Problem at line 2443 character 40: 'match' is already defined.
>>
>> var type = Expr.order[i], match;
>>
>> Problem at line 2452 character 26: Use '!==' to compare with 'null'.
>>
>> if ( set != null ) {
>>
>> Problem at line 2473 character 64: Use '!==' to compare with 'null'.
>>
>> if ( (match = Expr.leftMatch[ type ].exec( expr )) != null &&
>> match[2] ) {
>>
>> Problem at line 2498 character 58: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
>>
>> Problem at line 2503 character 51: Use '!==' to compare with 'null'.
>>
>> if ( inplace && found != null ) {
>>
>> Problem at line 2534 character 27: Use '===' to compare with 'null'.
>>
>> if ( anyFound == null ) {
>>
>> Problem at line 2554 character 35: Unescaped '-'.
>>
>> ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
>>
>> Problem at line 2555 character 39: Unescaped '-'.
>>
>> CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
>>
>> Problem at line 2556 character 48: Unescaped '-'.
>>
>> NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
>>
>> Problem at line 2557 character 41: Unescaped '-'.
>>
>> ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)
>> \3|)\s*...
>>
>> Problem at line 2558 character 38: Unescaped '-'.
>>
>> TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
>>
>> Problem at line 2559 character 65: Unescaped '-'.
>>
>> CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
>>
>> Problem at line 2560 character 69: Unescaped '-'.
>>
>> POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
>>
>> Problem at line 2561 character 39: Unescaped '-'.
>>
>> PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\
>> (\)]*)...
>>
>> Problem at line 2611 character 29: 'i' is already defined.
>>
>> for ( var i = 0, l = checkSet.length; i < l; i++ ) {
>>
>> Problem at line 2611 character 36: 'l' is already defined.
>>
>> for ( var i = 0, l = checkSet.length; i < l; i++ ) {
>>
>> Problem at line 2612 character 30: 'elem' is already defined.
>>
>> var elem = checkSet[i];
>>
>> Problem at line 2633 character 61: 'nodeCheck' used out of scope.
>>
>> checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
>>
>> Problem at line 2643 character 66: 'nodeCheck' used out of scope.
>>
>> checkFn("previousSibling", part, doneName, checkSet, nodeCheck,
>> isXML);
>>
>> Problem at line 2678 character 56: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
>>
>> Problem at line 2758 character 29: Expected an assignment or function
>> call and instead saw an expression.
>>
>> elem.parentNode.selectedIndex;
>>
>> Problem at line 2771 character 20: Wrap the /regexp/ literal in parens
>> to disambiguate the slash operator.
>>
>> return /h\d/i.test( elem.nodeName );
>>
>> Problem at line 2801 character 20: Wrap the /regexp/ literal in parens
>> to disambiguate the slash operator.
>>
>> return /input|select|textarea|button/i.test(elem.nodeName);
>>
>> Problem at line 2841 character 29: 'i' is already defined.
>>
>> for ( var i = 0, l = not.length; i < l; i++ ) {
>>
>> Problem at line 2865 character 32: Expected a 'break' statement before
>> 'case'.
>>
>> node = elem;
>>
>> Problem at line 2915 character 34: Use '!==' to compare with 'null'.
>>
>> elem[ name ] != null ?
>>
>> Problem at line 2922 character 27: Use '===' to compare with 'null'.
>>
>> return result == null ?
>>
>> Problem at line 2958 character 6: Don't make functions within a loop.
>>
>> }));
>>
>> Problem at line 2973 character 77: Expected an assignment or function
>> call and instead saw an expression.
>>
>> Array.prototype.slice.call( document.documentElement.childNodes, 0 )
>> [0].node...
>>
>> Problem at line 2987 character 29: 'i' is already defined.
>>
>> for ( var i = 0; array[i]; i++ ) {
>>
>> Problem at line 3070 character 34: Missing '()' invoking a
>> constructor.
>>
>> id = "script" + (new Date).getTime();
>>
>> Problem at line 3298 character 11: 'slice' is already defined.
>>
>> slice = Array.prototype.slice;
>>
>> Problem at line 3303 character 20: Confusing use of '!'.
>>
>> return !!qualifier.call( elem, i, elem ) === keep;
>>
>> Problem at line 3706 character 49: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
>>
>> Problem at line 3723 character 49: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
>>
>> Problem at line 3891 character 22: 'root' was used before it was
>> defined.
>>
>> function root( elem, cur ) {
>>
>> Problem at line 3990 character 50: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
>>
>> Problem at line 4049 character 25: 'i' is already defined.
>>
>> for ( var i = 0; ret[i]; i++ ) {
>>
>> Problem at line 4070 character 50: Use '!==' to compare with 'null'.
>>
>> for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
>>
>> Problem at line 4175 character 13: Function statements cannot be
>> placed in blocks. Use a function expression or move the statement to
>> the top of the outer function.
>>
>> function getWH() {
>>
>> Problem at line 4281 character 24: 'name' is already defined.
>>
>> for ( var name in options ) {
>>
>> Problem at line 4385 character 24: Use '===' to compare with 'null'.
>>
>> return val == null ?
>>
>> Problem at line 4542 character 41: Bad operand.
>>
>> if ( s.global && ! jQuery.active++ ) {
>>
>> Problem at line 4694 character 17: 'e' is already defined.
>>
>> } catch(e) { }
>>
>> Problem at line 4706 character 17: 'e' is already defined.
>>
>> } catch(e) {
>>
>> Problem at line 4725 character 26: 'complete' was used before it was
>> defined.
>>
>> function complete() {
>>
>> Problem at line 4739 character 25: 'trigger' is already defined.
>>
>> function trigger(type, args) {
>>
>> Problem at line 4828 character 29: 'buildParams' was used before it
>> was defined.
>>
>> function buildParams( prefix, obj ) {
>>
>> Problem at line 4838 character 45: Use '!==' to compare with 'null'.
>>
>> } else if ( !traditional && obj != null && typeof obj === "object" ) {
>>
>> Problem at line 4856 character 19: Unescaped '-'.
>>
>> rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
>>
>> Problem at line 4935 character 24: Use '===' to compare with 'null'.
>>
>> } else if ( fn == null || bool ) {
>>
>> Problem at line 4990 character 31: Use '!==' to compare with 'null'.
>>
>> if ( opt.overflow != null ) {
>>
>> Problem at line 5134 character 35: Use '!==' to compare with 'null'.
>>
>> if ( this.elem[this.prop] != null && (!this.elem.style ||
>> this.elem.style[t...
>>
>> Problem at line 5134 character 94: Use '===' to compare with 'null'.
>>
>> if ( this.elem[this.prop] != null && (!this.elem.style ||
>> this.elem.style[t...
>>
>> Problem at line 5195 character 43: Use '!==' to compare with 'null'.
>>
>> if ( this.options.display != null ) {
>>
>> Problem at line 5259 character 1: Mixed spaces and tabs.
>>
>> fast: 200,
>>
>> Problem at line 5260 character 1: Mixed spaces and tabs.
>>
>> _default: 400
>>
>> Problem at line 5269 character 60: Use '!==' to compare with 'null'.
>>
>> if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
>>
>> Problem at line 5286 character 15: 'genFx' was used before it was
>> defined.
>>
>> function genFx( type, num ) {
>>
>> Problem at line 5558 character 25: Use '===' to compare with 'null'.
>>
>> return size == null ? null : this;
>
> It occurs to me it would be useful to provide modified jquery txt --
> 1.4.2 the corrected and commented out
> version (with comments OTHERWISE deleted) SO you can line up the line
> numbers in the report, quoted above with the actual lines of text
> where the errors occur. FOR this I provide that modified 1.4.2 I fed
> in the get the JSLint report. You can find it at:
>
> http://mynichecomputing.org/modJTjquery-1_4_2.txt

Thanks, but it doesn't really matter. Even if _all_ of those issues
turn out to be "benign", their very presence ensures mass confusion for
those who have to maintain the code (and we know that they are not
exactly proficient with JS to begin with).
From: "Michael Haufe ("TNO")" on
lorlarz wrote:
> if ( (options = arguments[ i ]) != null ) {

David Mark wrote:
> It didn't flag the assignment in the conditional too?

Common practice dictates that the extra parenthesis make explicit that
the assignment was intentional. Mozilla strict warnings honor this
pattern. Perhaps other engines do as well but I haven't tested.
From: David Mark on
Michael Haufe ("TNO") wrote:
> lorlarz wrote:
>> if ( (options = arguments[ i ]) != null ) {
>
> David Mark wrote:
>> It didn't flag the assignment in the conditional too?
>
> Common practice dictates that the extra parenthesis make explicit that
> the assignment was intentional. Mozilla strict warnings honor this
> pattern. Perhaps other engines do as well but I haven't tested.

Thanks, I missed that. So many warnings, so little time. :)

I'm not big on Mozilla strict mode though. IIRC, many of its warnings
are arbitrary (even more so than JSLint). Complaining about anonymous
functions that don't return anything comes to mind.