Ключевые слова:
определенные внутри содержащей функции.
Вы замыкание создаёте в момент вызова функции
a(), а внутри неё уже используете callback. В данном случае никакой
содержащей функции нет, есть только глобальный контекст выполнения. Поэтому, в замыкание попало не то, что внутри функции
a(), а то что, снаружи - window:
var d = 0;
function a(s, callback) {
d = 42;
callback(); // здесь никакого замыкания нет, есть только вызов функции
};
a(1, function() { // Замыкание создаётся здесь
console.log(a);
console.log(d);
})