What's the reason for using such syntax (0, _.Em)();
Solution 1:
Basically, this syntax allows to call _.Em()
in the context of the window
object instead of _
.
Assuming you have this code:
Foo = function() {
this.foo = "foo";
};
Foo.prototype.Em = function() {
alert(this.foo);
};
var _ = new Foo();
Issuing _.Em()
will result in Em()
being called in the context of _
. Inside the function, the this
keyword will refer to _
, so foo
will be printed.
Issuing (0, _.Em)()
decouples the method call from the object and performs the call in the global context. Inside the function, the this
keyword will refer to window
, so undefined
will be printed, since window
does not have a foo
property.
You can test the difference between the two syntaxes in this fiddle.