Поясните суть синтаксической конструкции
Доброго времени суток!
Объясните пожалуйста суть следующей синтаксической конструкции: 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()); |
Понял, спасибо за разъяснения
|
Цитата:
var object = {method: function(){return this}}; alert([ (object.method)(), // вернет object (object, object.method)() // вернет window ]); |
А если так, только в перед тем как выполнить попробуйте предсказать результат: :)
var object = {method: function(){return this}}; alert([ (object.method)(), (object.method)(), object ]); |
monolithed,
что это??? Вообще ж не в тему!:) |
var p = 'in window'; var o = { p: 'in object', f: function() { alert(this); return this.p; } }; var f = o.f; alert([ (o.f)(), (f)(), (o.f, o.f)() ]); |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 11:15. |