De alguma forma, minha função não tem acesso ao fechamento principal e está faltando variáveis. Quão?

Na minha função de nível superior, estou importando algumas dependências usando o require.js. E eles estão lá, não há problema. Dentro dessa função, defino uma função de retorno de chamada e tento usar algumas das variáveis importadas via require.js, ou seja, variáveis dentro do fechamento do pai.

E eles simplesmente não estão lá, como confirmado por um ponto de interrupção e uma espiada no painel Variáveis de escopo do inspetor Chrome.

Eu entendi aquilofn.apply e amigos apenas definem o contexto tanto quantothis continua, não que eles possam destruir uma referência a um fechamento ou alterar a cadeia de escopo.

define([
    'backbone',
    'backbone.vent',
    'app/utils/foo',
    'app/services/intent'
], function(Backbone, Vent, Foo) {
    'use strict';

    // Backbone, Vent, and Foo are defined here

    Vent.on('myevent', function(options) {
        // Backbone is defined here, but not Vent or Foo.
    });
});

Como isso é possível?

E como posso corrigir isso?

questionAnswers(2)

yourAnswerToTheQuestion