Поясните суть синтаксической конструкции
Доброго времени суток!
Объясните пожалуйста суть следующей синтаксической конструкции:
function a() { return 1; }
function b() { return 2; }
(a,b)()
Речь идет о третьей строке |
var b = function(b) { return b+b; };
alert((b)(2));
|
в примере monolithed, просто создается функция, которая назначается в перменнную(да, в JS функции это такие же объекты как и все остальное)
в вашем конкретном примере, еще добавляется оператор запятая, который возвращает последний элемент
var a = function() { return 1; } ;//здесь точка с запятой обязательны, во избежание ошибок
var b = function() { return 2; } ;
alert((a,b)());
http://javascript.ru/basic/functions#sozdanie-funkciy http://javascript.ru/comma |
Прошу прощения за неверный код, исправил. Интересует что происходит именно в (a,b)()
|
ну, вам же уже ответили.
a и b - обычные функции перечисление через запятую возвращает последний объект, то есть вторую функцию. затем она вызывается самым обычным способом |
Благодарю за ответ.
А как объяснить то, что следующая за запятой функция вызывается в другой области видимости?
var p = 'in window';
var o =
{
p: 'in object',
f: function() {
console.log(this);
return this.p;
}
};
console.log([
(o.f)(),
(o.f, o.f)()
]);
То есть получается, что перечисление функций через запятую позволяет «подняться» в нужную область видимости, вплоть до window? |
UPD: упс, туплю. |
Смущает. Я поэтому собственно и спрашиваю.
|
Цитата:
var p = 'in window'; // глобальная облаласть видимости
var o = {
p: 'in object', //свойство объекта
o: function() { //метод объекта
return this.p;
}
};
alert(p);
alert(o.p);
alert(o.o());
|
Понял, спасибо за разъяснения
|
| Часовой пояс GMT +3, время: 23:24. |