Цитата:
Но уже разобрался, зацените. Я думал, что каждый раз, когда происходит что-то подобное: 15 alert( sum(1,2) ); // 6 16 alert( sum(2,3) ); // 10 интерпретатор проходит весь скрипт сначала, а тут ссылка уже указывает на другую функцию (объект). Но теперь понял, что сформируется уже другая функция и будет вызываться "модифицированная" doublingDecorator. Теперь еще раз перечитал указанный раздел и вижу - ответ там есть, но вот этого нюанса - взгляда с необходимого мне ракурса не было, а уточнение заняло страницу форума. Спасибо за помощь. Просьба остается в силе - буду рад рассмотреть аналоги исполнения. |
Вот еще хрень.
Источник комментарий на habrahabr.ru var y = 5; var x = function(){ return y; }; var z = function(t){ var y = 10; return t(); } z(x); Почему в строке 7 return t();? Что это значит? Где можно об этом прочитать? |
Цитата:
1. y - number 2. x - function 3. z - function z(x); -> вызывается функция z, в которую в качестве аргумента передается другая фунция (x), имя которой (имя аргумента) задается как t. Лучше скажи, почему y = 5 :) var y = 5; var x = function(){ return y; }; var z = function(t){ var y = 10; return t(); } alert( z(x) ); |
По-моему у в
3 return y; - есть window.y=5, а в 6 var y = 10; - это function Lexical Environment. Сначала х(), а потом уже t(), используют window.y=5. На этом примере, можешь показать как ты анализируешь области видимости. Так как это было (дословно), когда просматривал этот код, используешь ли какие-то наборы правил типа этих для this (в разделе "Теория"). Может схемку какую рисуешь? |
Цитата:
// 1 function() { // 2 function() { // 3 } } Достаточно запомнить одно: Дэвид Флэнаган: Цитата:
|
Встречал где-нибдь описание такого
var some_function = new Function('console.log(my_var)'); (именно 'console.log(my_var)') ? Источник - комментарий на habrahabr.ru |
Цитата:
конструктор Function [[Scope]] для new Function |
Дэвид Флэнаган:
Инструкция return может также использоваться без выражения, тогда она про сто прерывает исполнение функции, не возвращая значение. Например: function display_object(obj) { [I] // Сначала убедимся в корректности нашего аргумента // В случае некорректности пропускаем остаток функции[/I] if (obj == null) return; [I] // Здесь находится оставшаяся часть функции...[/I] } И еще пример function foo() { if (false) { var x = 1; } return; var y = 1; } Вопрос: Почему return не в конце? Если поменять местами строки 5 и 6 что-то изменится? |
Цитата:
Цитата:
|
Для возврата значения используется директива return. Она может находиться в любом месте функции.
Как только до нее доходит управление — функция завершается и значение передается обратно. Есть совет как быть внимательнее, отличный от "Будь внимательнее!" ?:) |
Часовой пояс GMT +3, время: 12:13. |