westdp: Доктор, у меня левое ухо ненормальное — оно больше, чем правое.
Давайте уменьшим его до нормальных размеров.
А можно правое сделать ненормальным?
Daniel Newman: Да не за что:) Относительно комментария:
1. Получение ссылок на переменные из любого контекста по сути есть замыкание. Каррирование в Javascript — всегда замыкание. Но замыкание — вовсе не каррирование.
В первом примере кода (предположим, он написан в глобальном контексте) функции, хранящиеся в add5 и add10 получили в замыкание по 2 контекста.
2. Да, у Дмитрия Сошникова очень многие вещи, касающиеся ECMAScript (и не только), описаны очень хорошо. Отлично, что вы нашли эти статьи, и горе мне, горе, что не привёл ссылки на них:)
3. Я хотел подчеркнуть, что глобальный контекст в Javascript всегда попадает в замыкание любой функции.
Что же касается отсутствия var — без этого оператора будет произведён поиск по всем контекстам в порядке их вложенности. Если ни в одном контексте не будет найдено, то, в отсутствии режима use strict, будет создано свойство глобального объекта, а в этом режиме будет выброшено исключение.
Свойство глобального объекта — вовсе не глобальная переменная. Разницу понять просто — переменную невозможно удалить, она будет жить столько, сколько живёт контекст, в котором она создана. Свойство может быть удалено в любой момент.
Rsa97: Наши клиенты не любят слово «невидимые». Мы предпочитаем говорить «линии нарисованы прозрачным цветом».
Пы.Сы. Кстати, в отдельных случаях в CSS это именно так:)