Если не придираться к деталям, то можно писать «извени» и путать джаву с джаваскриптом.
Смотрите.
(function () {
var a = 42;
}())
Никаких свободных переменных, лексического захвата и прочих страшных слов тут нет. Теоретически это замыкание, т.к. любая функция в JS захватывает свой лексический контекст, но в данном случае захватывать нечего и нечем.
var answer = (function () {
var a = 42;
return a;
}())
Тут тоже нет ничего подобного, так как внутри IIFE не используются никакие переменные, не определенные внутри нее самой.
var question = [40, 2];
var answer = (() {
return function () {
return question[0] + question[1]
}
}())
А вот теперь это замыкание, в него попала переменная question:
Похоже, глюк конкретной версии хрома под данную OS. Отправьте баг-репорт и продолжайте разрабатывать, ко времени релиза вашего приложения, наверное, поправят.
Смотрите.
Никаких свободных переменных, лексического захвата и прочих страшных слов тут нет. Теоретически это замыкание, т.к. любая функция в JS захватывает свой лексический контекст, но в данном случае захватывать нечего и нечем.
Тут тоже нет ничего подобного, так как внутри IIFE не используются никакие переменные, не определенные внутри нее самой.
А вот теперь это замыкание, в него попала переменная question: