Virgül operatörü, işlenenlerinin her birini (soldan sağa) değerlendirir ve son işlenenin değerini döndürür.
console.log((1, 2)); // Returns 2 in console
console.log((a = b = 3, c = 4)); // Returns 4 in console
Öyleyse bir örnek görelim:
var a = {
foo: function() {
console.log(this === window);
}
};
a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console
Şimdi, foo
yöntemde this
eşittir a
(çünkü foo
eklenmiştir a
). Yani a.foo(
doğrudan ararsanız false
, konsolda oturum açacaktır .
Ama eğer ararsan (0, a.foo)()
. İfade (0, a.foo)
, işlenenlerinin her birini (soldan sağa) değerlendirecek ve son işlenenin değerini döndürür. Başka bir deyişle, (0, a.foo)
eşdeğerdir
function() {
console.log(this === window);
}
Bu işlev artık hiçbir şeye bağlı olmadığından this
, küresel nesnedir window
. Bu yüzden true
aradığınızda konsolda oturum açar (0, a.foo)()
.
_b.a.call()
niyeti açıklığa kavuşturmak.