As said here:
http://jqfundamentals.com/book/index.html
Closures can also be used to resolve issues with the this keyword, which is unique t
Take a look at this line in the example in the link above
console.log(self.myName, this.myName);
(with self = this; a couple of lines above). The closure defined outerFunction method, exists in a different scope that is why it has a different this value from the outerObj object. (self.myName!=this.myName)
Scope traversal means, when you are reaching to grab a value (variable,object) that exists in a different scope, therefore additional overhead is added (code becomes slower to execute).
Using bind, you 're calling a function with an existing scope, so that scope traversal does not take place.