Поясните суть синтаксической конструкции
Доброго времени суток!
Объясните пожалуйста суть следующей синтаксической конструкции: 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, время: 06:37. |