Есть 2 куска кода:
1.
var foo = {
bar: function(){ return this.baz; },
baz: 1
}
typeof (f = foo.bar)();
2.
var f = (function f(){ return "1"; }, function g(){ return 2; })();
typeof f;
В первом случае ответ undefined. А втором - 2.
Не могу понять, почему ответы именно такие. Вероятно, из-за того, что не понимаю, как работает выражение ()(). Прошу объяснить.
f = (foo.bar)(); typeof f;и тогда будет работать одинаково – Алексей Шиманский Sep 25 '17 at 17:27typeof f, аfбудет 2. Аtypeof fбудетnumber. – Qwertiy Sep 25 '17 at 19:19