我的模块设置中存在未定义变量的问题,最好通过示例解释,我有:
common.js(config for requirejs)
require([
'module/polyfills/someModule'
], function(
module
) {
module.init();
});
模块/ polyfills / someModule.js
define([
'underscore',
'config',
'text!tpl/utils/textTemplate.html'
], function(_, config, template) {
// ref 1
return {
init: function() {
// ref 2
// do stuff
},
events: function() {
// add some events
},
};
});
如果我在评论ref 1
上添加断点,我可以看到config
变量及其属性。但是,如果我在ref 2
处设置断点,则config
未定义。但是下划线和模板不是未定义的。
我在require配置中删除了有关config的任何特殊内容。 Config看起来像这样:
config.js
define([], function (clickType) {
return {
clickType: 'test'
};
});
控制台中没有错误,我非常确定这不是循环依赖!
答案 0 :(得分:0)
ref2处的注释位置是一个没有访问配置的闭包。该函数是在解析时创建的,它是一个闭包,无论你在里面访问它是什么都可用。简单测试,在// ref2
添加以下代码行var myConfig = config;
现在您将看到配置已定义。