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?