Цитата:
Но уже разобрался, зацените. Я думал, что каждый раз, когда происходит что-то подобное: 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, время: 00:32. |