쉼표 연산자는 각 피연산자를 평가하고 (왼쪽에서 오른쪽으로) 마지막 피연산자의 값을 반환합니다.
console.log((1, 2)); // Returns 2 in console
console.log((a = b = 3, c = 4)); // Returns 4 in console
따라서 예를 보겠습니다.
var a = {
foo: function() {
console.log(this === window);
}
};
a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console
지금에 foo있어서, this동일하다 a(하기 때문에 foo부착된다 a). 따라서 a.foo()를 직접 호출하면 false콘솔에 로그인 됩니다.
그러나 전화했다면 (0, a.foo)(). 표현식 (0, a.foo)은 각 피연산자 (왼쪽에서 오른쪽으로)를 평가하고 마지막 피연산자의 값을 반환합니다. 즉, 다음 (0, a.foo)과 같습니다.
function() {
console.log(this === window);
}
이 함수는 더 이상 아무것도 연결되지 않으므로 this전역 객체 window입니다. 그것이 true호출 할 때 콘솔에 로그인 하는 이유 (0, a.foo)()입니다.
_b.a.call()의도를 분명히하기 위해 해야했습니다 .