JSHint "Possible strict violation." when using `bind` JSHint "Possible strict violation." when using `bind` javascript javascript

JSHint "Possible strict violation." when using `bind`


It is extremely hard to detect this case without running the code. You can use option validthis to suppress this warning:

"use strict";var obj = {    f: function() {        this.prop = 'value';        g.bind( this )();    }};function g() {    /*jshint validthis:true */    console.log( this.prop );}

It is to be noted that jshint comments are function scoped. So the comment will work for the function g and its inner functions, not just the next line.


You can also achieve the same effect if you modify your code to the following to avoid using this all together.

"use strict";var obj = {    f: function() {        this.prop = 'value';        g.bind( null, this )();    }};function g(self) {    console.log( self.prop );}


Here's a simpler solution that doesn't require any change of pattern or specific markup for jshint:

"use strict";var obj = {    f: function() {        this.prop = 'value';        G.bind( this )();    }};function G() {    console.log( this.prop );}

jshint assumes that you're following the convention that functions starting with an uppercase letter are classes which will be instantiated and always having this available.